From 08bb0bda2af4c94c0d8b5cb8d4fbbab91cf3bb15 Mon Sep 17 00:00:00 2001 From: Leon Machens Date: Wed, 19 Dec 2018 14:44:23 +0100 Subject: [PATCH 001/101] fix: dynamic isDraggable and isResizable remount --- css/styles.css | 4 ++++ lib/GridItem.jsx | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/css/styles.css b/css/styles.css index dff787025..dd8f23c07 100644 --- a/css/styles.css +++ b/css/styles.css @@ -51,3 +51,7 @@ border-right: 2px solid rgba(0, 0, 0, 0.4); border-bottom: 2px solid rgba(0, 0, 0, 0.4); } + +.react-resizable-hide > .react-resizable-handle { + display: none; +} diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 9ef75b1ff..e2b1d7f0a 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -308,9 +308,13 @@ export default class GridItem extends React.Component { * @param {Element} child Child element. * @return {Element} Child wrapped in Draggable. */ - mixinDraggable(child: ReactElement): ReactElement { + mixinDraggable( + child: ReactElement, + isDraggable: boolean + ): ReactElement { return ( { */ mixinResizable( child: ReactElement, - position: Position + position: Position, + isResizable: boolean ): ReactElement { const { cols, x, minW, minH, maxW, maxH } = this.props; @@ -350,6 +355,10 @@ export default class GridItem extends React.Component { ]; return ( { }); // Resizable support. This is usually on but the user can toggle it off. - if (isResizable) newChild = this.mixinResizable(newChild, pos); + newChild = this.mixinResizable(newChild, pos, isResizable); // Draggable support. This is always on, except for with placeholders. - if (isDraggable) newChild = this.mixinDraggable(newChild); + newChild = this.mixinDraggable(newChild, isDraggable); return newChild; } From 53f8272fbdd24c474992674d18d85c99e61a697f Mon Sep 17 00:00:00 2001 From: Matt Haff Date: Fri, 1 Feb 2019 22:50:37 -0500 Subject: [PATCH 002/101] Issue #898: Updating WebpackBin link to new CodeSandbox link in README (#906) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e592c55f..d27b5c187 100644 --- a/README.md +++ b/README.md @@ -406,7 +406,7 @@ will be draggable. If you have a feature request, please add it as an issue or make a pull request. -If you have a bug to report, please reproduce the bug in [WebpackBin](http://www.webpackbin.com/VymTE3zWG) to help +If you have a bug to report, please reproduce the bug in [CodeSandbox](https://codesandbox.io/s/5wy3rz5z1x?module=%2Fsrc%2FShowcaseLayout.js) to help us easily isolate it. ## TODO List From e8794dcad7481bc84f728148f6f672016e78c28b Mon Sep 17 00:00:00 2001 From: Nacho Justicia Date: Sat, 2 Feb 2019 04:51:15 +0100 Subject: [PATCH 003/101] Add graphext to projects using react-grid-layout list (#905) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d27b5c187..e644a0fef 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ RGL is React-only and does not require jQuery. - [Reflect](https://reflect.io) - [ez-Dashing](https://github.com/ylacaute/ez-Dashing) - [Kibana](https://www.elastic.co/products/kibana) +- [Graphext](https://graphext.com/) *Know of others? Create a PR to let me know!* From 31a9560f17b5e43fb39febe95afab4734635f9c0 Mon Sep 17 00:00:00 2001 From: nikolas Date: Fri, 1 Feb 2019 23:09:01 -0500 Subject: [PATCH 004/101] travis: test on node 10 (#877) * travis: test on node 10 This is the current LTS release of node. https://github.com/nodejs/Release#release-schedule * Update .travis.yml Updated to specify latest node version & latest LTS --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3bda87ebb..041ad59b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: node_js node_js: - - "6" - - "7" + - "node" + - "lts/*" script: - make build test cache: yarn From aa5af3cca2662a2ed2083f07c1798b745d4d6f89 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Sat, 2 Feb 2019 12:19:58 +0800 Subject: [PATCH 005/101] fix(deps): update to webpack4 (#907) Clears webpack-dev-server warning --- examples/14-toolbox.html | 2 +- package.json | 5 +- webpack-dev-server.config.js | 89 +- webpack-examples.config.js | 73 +- webpack.config.js | 8 +- yarn.lock | 5106 ++++++++++++++++++++++------------ 6 files changed, 3403 insertions(+), 1880 deletions(-) diff --git a/examples/14-toolbox.html b/examples/14-toolbox.html index fefcde163..ce906d9e2 100644 --- a/examples/14-toolbox.html +++ b/examples/14-toolbox.html @@ -17,7 +17,7 @@

React-Grid-Layout Demo 14 - Toolbox

  • View the previous example: "Error Case"
  • -

    This includes an interactive toolbox. Try dragging widgets into it!

    +

    This demonstrates how to implement a toolbox to add and remove widgets.

    diff --git a/package.json b/package.json index 81a335013..91178c4ba 100644 --- a/package.json +++ b/package.json @@ -76,8 +76,9 @@ "react-transform-hmr": "^1.0.2", "style-loader": "^0.20.2", "valiquire": "^0.3.0", - "webpack": "^3.11.0", - "webpack-dev-server": "^2.11.1" + "webpack": "^4.0.0", + "webpack-cli": "^3.2.1", + "webpack-dev-server": "^3.1.11" }, "publishConfig": { "registry": "https://registry.npmjs.org" diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index 354f89188..cd7289ac7 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -2,52 +2,53 @@ const path = require('path'); var webpack = require("webpack"); module.exports = { - context: __dirname, - entry: "./test/dev-hook.jsx", - output: { - path: '/', - filename: "bundle.js", - sourceMapFilename: "[file].map", - }, - module: { - loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', - query: { - cacheDirectory: true, - plugins: [ - ['react-transform', - { - transforms: [ - { - transform: 'react-transform-hmr', - imports: ['react'], - locals: ['module'] - } - ] - } - ] + mode: 'development', + context: __dirname, + entry: "./test/dev-hook.jsx", + output: { + path: '/', + filename: "bundle.js", + sourceMapFilename: "[file].map", + }, + module: { + rules: [ + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', + query: { + cacheDirectory: true, + plugins: [ + ['react-transform', + { + transforms: [ + { + transform: 'react-transform-hmr', + imports: ['react'], + locals: ['module'] + } + ] + } ] - } + ] } - ] - }, - plugins: [ - new webpack.DefinePlugin({ - "process.env": { - NODE_ENV: JSON.stringify('development') - } - }), - ], - devtool: "eval", - devServer: { - publicPath: '/', - compress: true, - port: 4002 - }, - resolve: { - extensions: [".webpack.js", ".web.js", ".js", ".jsx"], - alias: { - 'react-grid-layout': path.join(__dirname, '/index-dev.js') } + ] + }, + plugins: [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: JSON.stringify('development') + } + }), + ], + devtool: "eval", + devServer: { + publicPath: '/', + compress: true, + port: 4002 + }, + resolve: { + extensions: [".webpack.js", ".web.js", ".js", ".jsx"], + alias: { + 'react-grid-layout': path.join(__dirname, '/index-dev.js') } + } }; diff --git a/webpack-examples.config.js b/webpack-examples.config.js index 75826d137..c2fdab74a 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -4,40 +4,49 @@ var fs = require('fs'); // Builds example bundles module.exports = { - context: __dirname, - entry: { - commons: ["lodash"], - }, - output: { - path: __dirname + "/dist", - filename: "[name].bundle.js", - sourceMapFilename: "[file].map", - }, - module: { - loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query: { - cacheDirectory: true, - plugins: [ - 'transform-react-inline-elements', - 'transform-react-constant-elements', - ] - }} - ] - }, - plugins: [ - new webpack.DefinePlugin({ - "process.env": { - NODE_ENV: JSON.stringify('production') + mode: 'development', + context: __dirname, + entry: { + commons: ["lodash"], + }, + optimization: { + splitChunks: { + cacheGroups: { + commons: { + name: 'commons', + chunks: 'initial', + minChunks: 2 } - }), - new webpack.optimize.CommonsChunkPlugin({ - name: 'commons', filename: 'commons.js' - }) - ], - resolve: { - extensions: [".webpack.js", ".web.js", ".js", ".jsx"], - alias: {'react-grid-layout': __dirname + '/index-dev.js'} + } } + }, + output: { + path: __dirname + "/dist", + filename: "[name].bundle.js", + sourceMapFilename: "[file].map", + }, + module: { + rules: [ + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query: { + cacheDirectory: true, + plugins: [ + 'transform-react-inline-elements', + 'transform-react-constant-elements', + ] + }} + ] + }, + plugins: [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: JSON.stringify('production') + } + }), + ], + resolve: { + extensions: [".webpack.js", ".web.js", ".js", ".jsx"], + alias: {'react-grid-layout': __dirname + '/index-dev.js'} + } }; // Load all entry points diff --git a/webpack.config.js b/webpack.config.js index 180305c92..fe47b527f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,6 +2,10 @@ var webpack = require("webpack"); // Builds bundle usable + + RGL Example 16 - Drag From Outside + + +

    React-Grid-Layout Demo 16 - Drag From Outside

    + +

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    +

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    +
    + + diff --git a/examples/example-styles.css b/examples/example-styles.css index cd3f2d7a5..b54e70742 100644 --- a/examples/example-styles.css +++ b/examples/example-styles.css @@ -95,3 +95,10 @@ li b { border: 1px solid black; background-color: #ddd; } +.droppable-element { + width: 150px; + background: #ddd; + border: 1px solid black; + margin-top: 10px; + padding: 10px; +} diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 9ef75b1ff..970f07b81 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -1,5 +1,6 @@ // @flow import React from "react"; +import ReactDOM from "react-dom"; import PropTypes from "prop-types"; import { DraggableCore } from "react-draggable"; import { Resizable } from "react-resizable"; @@ -11,6 +12,7 @@ import type { ReactDraggableCallbackData, GridDragEvent, GridResizeEvent, + DroppingPosition, Position } from "./utils"; @@ -41,6 +43,7 @@ type Props = { static?: boolean, useCSSTransforms?: boolean, usePercentages?: boolean, + droppingPosition?: DroppingPosition, className: string, style?: Object, @@ -142,7 +145,12 @@ export default class GridItem extends React.Component { // Selector for draggable handle handle: PropTypes.string, // Selector for draggable cancel (see react-draggable) - cancel: PropTypes.string + cancel: PropTypes.string, + // Current position of a dropping element + droppingPosition: PropTypes.shape({ + x: PropTypes.number.isRequired, + y: PropTypes.number.isRequired + }) }; static defaultProps = { @@ -161,6 +169,42 @@ export default class GridItem extends React.Component { className: "" }; + currentNode: HTMLElement; + + componentWillReceiveProps(nextProps: Props) { + const { droppingPosition } = nextProps; + const { dragging } = this.state; + + if (!droppingPosition || !this.props.droppingPosition) { + return; + } + + if (!this.currentNode) { + // eslint-disable-next-line react/no-find-dom-node + this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement); + } + + if (!dragging) { + this.onDragHandler("onDragStart")(droppingPosition.e, { + node: this.currentNode, + deltaX: droppingPosition.x, + deltaY: droppingPosition.y + }); + } else if ( + (dragging && droppingPosition.x !== this.props.droppingPosition.x) || + droppingPosition.y !== this.props.droppingPosition.y + ) { + const deltaX = droppingPosition.x - dragging.left; + const deltaY = droppingPosition.y - dragging.top; + + this.onDragHandler("onDrag")(droppingPosition.e, { + node: this.currentNode, + deltaX, + deltaY + }); + } + } + // Helper for generating column width calcColWidth(): number { const { margin, containerPadding, containerWidth, cols } = this.props; @@ -462,6 +506,7 @@ export default class GridItem extends React.Component { h, isDraggable, isResizable, + droppingPosition, useCSSTransforms } = this.props; @@ -479,6 +524,7 @@ export default class GridItem extends React.Component { resizing: Boolean(this.state.resizing), "react-draggable": isDraggable, "react-draggable-dragging": Boolean(this.state.dragging), + dropping: Boolean(droppingPosition), cssTransforms: useCSSTransforms } ), diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 7fd338693..803575d0e 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -28,7 +28,9 @@ import type { CompactType, GridResizeEvent, GridDragEvent, + DragOverEvent, Layout, + DroppingPosition, LayoutItem } from "./utils"; @@ -38,7 +40,9 @@ type State = { mounted: boolean, oldDragItem: ?LayoutItem, oldLayout: ?Layout, - oldResizeItem: ?LayoutItem + oldResizeItem: ?LayoutItem, + droppingDOMNode: ?ReactElement, + droppingPosition?: DroppingPosition }; export type Props = { @@ -58,8 +62,10 @@ export type Props = { maxRows: number, isDraggable: boolean, isResizable: boolean, + isDroppable: boolean, preventCollision: boolean, useCSSTransforms: boolean, + droppingItem: $Shape, // Callbacks onLayoutChange: Layout => void, @@ -69,6 +75,12 @@ export type Props = { onResize: EventCallback, onResizeStart: EventCallback, onResizeStop: EventCallback, + onDrop: (itemPosition: { + x: number, + y: number, + w: number, + h: number + }) => void, children: ReactChildrenArray> }; // End Types @@ -154,6 +166,8 @@ export default class ReactGridLayout extends React.Component { preventCollision: PropTypes.bool, // Use CSS transforms instead of top/left useCSSTransforms: PropTypes.bool, + // If true, an external element can trigger onDrop callback with a specific grid position as a parameter + isDroppable: PropTypes.bool, // // Callbacks @@ -175,11 +189,19 @@ export default class ReactGridLayout extends React.Component { onResize: PropTypes.func, // Calls when resize is complete. onResizeStop: PropTypes.func, + // Calls when some element is dropped. + onDrop: PropTypes.func, // // Other validations // + droppingItem: PropTypes.shape({ + i: PropTypes.string.isRequired, + w: PropTypes.number.isRequired, + h: PropTypes.number.isRequired + }), + // Children must not have duplicate keys. children: function(props: Props, propName: string) { var children = props[propName]; @@ -213,17 +235,24 @@ export default class ReactGridLayout extends React.Component { margin: [10, 10], isDraggable: true, isResizable: true, + isDroppable: false, useCSSTransforms: true, verticalCompact: true, compactType: "vertical", preventCollision: false, + droppingItem: { + i: "__dropping-elem__", + h: 1, + w: 1 + }, onLayoutChange: noop, onDragStart: noop, onDrag: noop, onDragStop: noop, onResizeStart: noop, onResize: noop, - onResizeStop: noop + onResizeStop: noop, + onDrop: noop }; state: State = { @@ -238,7 +267,8 @@ export default class ReactGridLayout extends React.Component { mounted: false, oldDragItem: null, oldLayout: null, - oldResizeItem: null + oldResizeItem: null, + droppingDOMNode: null }; constructor(props: Props, context: any): void { @@ -564,7 +594,10 @@ export default class ReactGridLayout extends React.Component { * @param {Element} child React element. * @return {Element} Element wrapped in draggable and properly placed. */ - processGridItem(child: ReactElement): ?ReactElement { + processGridItem( + child: ReactElement, + isDroppingItem?: boolean + ): ?ReactElement { if (!child || !child.key) return; const l = getLayoutItem(this.state.layout, String(child.key)); if (!l) return null; @@ -581,7 +614,7 @@ export default class ReactGridLayout extends React.Component { draggableCancel, draggableHandle } = this.props; - const { mounted } = this.state; + const { mounted, droppingPosition } = this.state; // Parse 'static'. Any properties defined directly on the grid item will take precedence. const draggable = Boolean( @@ -621,14 +654,68 @@ export default class ReactGridLayout extends React.Component { maxH={l.maxH} maxW={l.maxW} static={l.static} + droppingPosition={isDroppingItem ? droppingPosition : undefined} > {child} ); } + onDragOver = (e: DragOverEvent) => { + const { droppingItem } = this.props; + const { layout } = this.state; + const { layerX, layerY } = e.nativeEvent; + const droppingPosition = { x: layerX, y: layerY, e }; + + if (!this.state.droppingDOMNode) { + this.setState({ + droppingDOMNode:
    , + droppingPosition, + layout: [ + ...layout, + { + ...droppingItem, + x: 0, + y: 0, + static: false, + isDraggable: true + } + ] + }); + } else if (this.state.droppingPosition) { + const shouldUpdatePosition = + this.state.droppingPosition.x != layerX || + this.state.droppingPosition.y != layerY; + shouldUpdatePosition && this.setState({ droppingPosition }); + } + + e.stopPropagation(); + e.preventDefault(); + }; + + onDrop = () => { + const { droppingItem, cols } = this.props; + const { layout } = this.state; + + const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {}; + const newLayout = compact( + layout.filter(l => l.i !== droppingItem.i), + this.compactType(), + cols + ); + + this.setState({ + layout: newLayout, + droppingDOMNode: null, + activeDrag: null, + droppingPosition: undefined + }); + + this.props.onDrop({ x, y, w, h }); + }; + render() { - const { className, style } = this.props; + const { className, style, isDroppable } = this.props; const mergedClassName = classNames("react-grid-layout", className); const mergedStyle = { @@ -637,10 +724,18 @@ export default class ReactGridLayout extends React.Component { }; return ( -
    +
    {React.Children.map(this.props.children, child => this.processGridItem(child) )} + {isDroppable && + this.state.droppingDOMNode && + this.processGridItem(this.state.droppingDOMNode, true)} {this.placeholder()}
    ); diff --git a/lib/components/WidthProvider.jsx b/lib/components/WidthProvider.jsx index 146cdb4dd..bc770485f 100644 --- a/lib/components/WidthProvider.jsx +++ b/lib/components/WidthProvider.jsx @@ -57,7 +57,7 @@ export default function WidthProvider< onWindowResize = () => { if (!this.mounted) return; - // eslint-disable-next-line + // eslint-disable-next-line react/no-find-dom-node const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element if (node instanceof HTMLElement) this.setState({ width: node.offsetWidth }); diff --git a/lib/utils.js b/lib/utils.js index f40016d10..243005f26 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -29,15 +29,16 @@ export type Position = { }; export type ReactDraggableCallbackData = { node: HTMLElement, - x: number, - y: number, + x?: number, + y?: number, deltaX: number, deltaY: number, - lastX: number, - lastY: number + lastX?: number, + lastY?: number }; export type PartialPosition = { left: number, top: number }; +export type DroppingPosition = { x: number, y: number, e: Event }; export type Size = { width: number, height: number }; export type GridDragEvent = { e: Event, @@ -45,6 +46,12 @@ export type GridDragEvent = { newPosition: PartialPosition }; export type GridResizeEvent = { e: Event, node: HTMLElement, size: Size }; +export type DragOverEvent = MouseEvent & { + nativeEvent: { + layerX: number, + layerY: number + } +}; type REl = ReactElement; export type ReactChildren = ReactChildrenArray; @@ -199,7 +206,7 @@ function resolveCompactionCollision( // Optimization: we can break early if we know we're past this el // We can do this b/c it's a sorted layout - if (otherItem.y > (item.y + item.h)) break; + if (otherItem.y > item.y + item.h) break; if (collides(item, otherItem)) { resolveCompactionCollision( @@ -354,7 +361,7 @@ export function moveElement( isUserAction: ?boolean, preventCollision: ?boolean, compactType: CompactType, - cols: number, + cols: number ): Layout { if (l.static) return layout; @@ -366,8 +373,8 @@ export function moveElement( const oldY = l.y; // This is quite a bit faster than extending the object - if (typeof x === 'number') l.x = x; - if (typeof y === 'number') l.y = y; + if (typeof x === "number") l.x = x; + if (typeof y === "number") l.y = y; l.moved = true; // If this collides with anything, move it. @@ -376,8 +383,8 @@ export function moveElement( // nearest collision. let sorted = sortLayoutItems(layout, compactType); const movingUp = - compactType === "vertical" && typeof y === 'number' ? oldY >= y - : compactType === "horizontal" && typeof x === 'number' ? oldX >= x + compactType === "vertical" && typeof y === "number" ? oldY >= y + : compactType === "horizontal" && typeof x === "number" ? oldX >= x : false; if (movingUp) sorted = sorted.reverse(); const collisions = getAllCollisions(sorted, l); diff --git a/test/examples/0-showcase.jsx b/test/examples/0-showcase.jsx index 0d3f07801..71f942531 100644 --- a/test/examples/0-showcase.jsx +++ b/test/examples/0-showcase.jsx @@ -53,7 +53,9 @@ class ShowcaseLayout extends React.Component { const compactType = oldCompactType === "horizontal" ? "vertical" - : oldCompactType === "vertical" ? null : "horizontal"; + : oldCompactType === "vertical" + ? null + : "horizontal"; this.setState({ compactType }); }; @@ -67,14 +69,16 @@ class ShowcaseLayout extends React.Component { }); }; + onDrop = elemParams => { + alert(`Element parameters: ${JSON.stringify(elemParams)}`); + }; + render() { return (
    - Current Breakpoint: {this.state.currentBreakpoint} ({ - this.props.cols[this.state.currentBreakpoint] - }{" "} - columns) + Current Breakpoint: {this.state.currentBreakpoint} ( + {this.props.cols[this.state.currentBreakpoint]} columns)
    Compaction type:{" "} @@ -89,6 +93,7 @@ class ShowcaseLayout extends React.Component { layouts={this.state.layouts} onBreakpointChange={this.onBreakpointChange} onLayoutChange={this.onLayoutChange} + onDrop={this.onDrop} // WidthProvider option measureBeforeMount={false} // I like to have it animate on mount. If you don't, delete `useCSSTransforms` (it's default `true`) diff --git a/test/examples/16-drag-from-outside.jsx b/test/examples/16-drag-from-outside.jsx new file mode 100644 index 000000000..ad40ca07e --- /dev/null +++ b/test/examples/16-drag-from-outside.jsx @@ -0,0 +1,134 @@ +import React from "react"; +import _ from "lodash"; +import { Responsive, WidthProvider } from "react-grid-layout"; +const ResponsiveReactGridLayout = WidthProvider(Responsive); + +class ShowcaseLayout extends React.Component { + static defaultProps = { + className: "layout", + rowHeight: 30, + onLayoutChange: function() {}, + cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, + initialLayout: generateLayout() + }; + + state = { + currentBreakpoint: "lg", + compactType: "vertical", + mounted: false, + layouts: { lg: this.props.initialLayout } + }; + + componentDidMount() { + this.setState({ mounted: true }); + } + + generateDOM() { + return _.map(this.state.layouts.lg, function(l, i) { + return ( +
    + {l.static ? ( + + Static - {i} + + ) : ( + {i} + )} +
    + ); + }); + } + + onBreakpointChange = breakpoint => { + this.setState({ + currentBreakpoint: breakpoint + }); + }; + + onCompactTypeChange = () => { + const { compactType: oldCompactType } = this.state; + const compactType = + oldCompactType === "horizontal" + ? "vertical" + : oldCompactType === "vertical" ? null : "horizontal"; + this.setState({ compactType }); + }; + + onLayoutChange = (layout, layouts) => { + this.props.onLayoutChange(layout, layouts); + }; + + onNewLayout = () => { + this.setState({ + layouts: { lg: generateLayout() } + }); + }; + + onDrop = elemParams => { + alert(`Element parameters: ${JSON.stringify(elemParams)}`); + }; + + render() { + return ( +
    +
    + Current Breakpoint: {this.state.currentBreakpoint} ({ + this.props.cols[this.state.currentBreakpoint] + }{" "} + columns) +
    +
    + Compaction type:{" "} + {_.capitalize(this.state.compactType) || "No Compaction"} +
    + + +
    + Droppable Element +
    + + {this.generateDOM()} + +
    + ); + } +} + +module.exports = ShowcaseLayout; + +function generateLayout() { + return _.map(_.range(0, 25), function(item, i) { + var y = Math.ceil(Math.random() * 4) + 1; + return { + x: (_.random(0, 5) * 2) % 12, + y: Math.floor(i / 6) * y, + w: 2, + h: y, + i: i.toString(), + static: Math.random() < 0.05 + }; + }); +} + +if (require.main === module) { + require("../test-hook.jsx")(module.exports); +} From e50401705d8548b11a598981a72bf4cd50283cd9 Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Wed, 11 Sep 2019 12:41:48 +0300 Subject: [PATCH 008/101] fix(examples): fix typo 16-drag-from-outside -> 15-drag-from-outside - fix typo - fix markup --- examples/0-showcase.html | 8 +++---- examples/1-basic.html | 8 +++---- examples/10-dynamic-min-max-wh.html | 8 +++---- examples/11-no-vertical-compact.html | 6 ++--- examples/12-prevent-collision.html | 6 ++--- examples/13-error-case.html | 6 ++--- examples/14-toolbox.html | 7 +++--- examples/15-drag-from-outside.html | 24 +++++++++++++++++++ examples/16-drag-from-outside.html | 24 ------------------- examples/2-no-dragging.html | 6 ++--- examples/3-messy.html | 10 ++++---- examples/4-grid-property.html | 6 ++--- examples/5-static-elements.html | 6 ++--- examples/6-dynamic-add-remove.html | 10 ++++---- examples/7-localstorage.html | 8 +++---- examples/8-localstorage-responsive.html | 10 ++++---- examples/9-min-max-wh.html | 10 ++++---- ...m-outside.jsx => 15-drag-from-outside.jsx} | 0 18 files changed, 82 insertions(+), 81 deletions(-) create mode 100644 examples/15-drag-from-outside.html delete mode 100644 examples/16-drag-from-outside.html rename test/examples/{16-drag-from-outside.jsx => 15-drag-from-outside.jsx} (100%) diff --git a/examples/0-showcase.html b/examples/0-showcase.html index a220221c2..613e5c9ef 100644 --- a/examples/0-showcase.html +++ b/examples/0-showcase.html @@ -16,9 +16,9 @@

    React-Grid-Layout Demo 0 - Showcase

  • View this example's source
  • View the next example: "Basic"
  • - -

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    -

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    -
    + +

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    +

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    +
    diff --git a/examples/1-basic.html b/examples/1-basic.html index d046486f3..3d163ceec 100644 --- a/examples/1-basic.html +++ b/examples/1-basic.html @@ -18,9 +18,9 @@

    React-Grid-Layout Demo 1 - Basic

  • View the previous example: "Showcase"
  • View the next example: "No Dragging"
  • - -

    Try dragging the elements around.

    -

    This is a basic, non-responsive layout with dragging and resizing. Usage is very simple.

    -
    + +

    Try dragging the elements around.

    +

    This is a basic, non-responsive layout with dragging and resizing. Usage is very simple.

    +
    diff --git a/examples/10-dynamic-min-max-wh.html b/examples/10-dynamic-min-max-wh.html index f22863461..e08cf9811 100644 --- a/examples/10-dynamic-min-max-wh.html +++ b/examples/10-dynamic-min-max-wh.html @@ -18,9 +18,9 @@

    React-Grid-Layout Demo 10 - Dynamic Minimum and Maximum Width/Height

  • View the previous example: "Minimum and Maximum Width/Height"
  • View the next example: "No Vertical Compacting (Free Movement)"
  • - -

    Your application may have more complex rules for determining an element's mins and maxes. This demo demonstrates how to use the `onResize` handler to accomplish this.

    -

    In this grid, all elements are allowed a max width of 2 if the height < 3, and a min width of 2 if the height >= 3.

    -
    + +

    Your application may have more complex rules for determining an element's mins and maxes. This demo demonstrates how to use the `onResize` handler to accomplish this.

    +

    In this grid, all elements are allowed a max width of 2 if the height < 3, and a min width of 2 if the height >= 3.

    +
    diff --git a/examples/11-no-vertical-compact.html b/examples/11-no-vertical-compact.html index 2498ade5b..a37a15eab 100644 --- a/examples/11-no-vertical-compact.html +++ b/examples/11-no-vertical-compact.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 11 - No Vertical Compacting (Free Movement)

  • View the previous example: "Dynamic Minimum and Maximum Width/Height"
  • View the next example: "Prevent Collision"
  • - -

    You may want to turn off vertical compacting so items can be placed anywhere in the grid. Set the property `verticalCompact` to `false` to achieve this effect.

    -
    + +

    You may want to turn off vertical compacting so items can be placed anywhere in the grid. Set the property `verticalCompact` to `false` to achieve this effect.

    +
    diff --git a/examples/12-prevent-collision.html b/examples/12-prevent-collision.html index 29b43b35a..fdd83d79a 100644 --- a/examples/12-prevent-collision.html +++ b/examples/12-prevent-collision.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 12 - Prevent Collision

  • View the previous example: "No Vertical Compacting (Free Movement)"
  • View the next example: "Error Case"
  • - -

    You may want to turn off rearrangement so items don't move arround when dragging. Set the property `preventCollision` to `true` to achieve this effect. It's particularly useful with `verticalCompact` set to `false`.

    -
    + +

    You may want to turn off rearrangement so items don't move arround when dragging. Set the property `preventCollision` to `true` to achieve this effect. It's particularly useful with `verticalCompact` set to `false`.

    +
    diff --git a/examples/13-error-case.html b/examples/13-error-case.html index 8d34395c2..a78795401 100644 --- a/examples/13-error-case.html +++ b/examples/13-error-case.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 13 - Error Case

  • View the previous example: "Prevent Collision"
  • View the next example: "Toolbox"
  • - -

    This is an extra test case for a collision bug fixed in November 2017. When you drag 1 over 2, it should not move over 3.

    -
    + +

    This is an extra test case for a collision bug fixed in November 2017. When you drag 1 over 2, it should not move over 3.

    +
    diff --git a/examples/14-toolbox.html b/examples/14-toolbox.html index ce906d9e2..918bd0213 100644 --- a/examples/14-toolbox.html +++ b/examples/14-toolbox.html @@ -16,8 +16,9 @@

    React-Grid-Layout Demo 14 - Toolbox

  • View this example's source
  • View the previous example: "Error Case"
  • - -

    This demonstrates how to implement a toolbox to add and remove widgets.

    -
    +
  • View the next example: "Drag From Outside"
  • + +

    This demonstrates how to implement a toolbox to add and remove widgets.

    +
    diff --git a/examples/15-drag-from-outside.html b/examples/15-drag-from-outside.html new file mode 100644 index 000000000..789506d06 --- /dev/null +++ b/examples/15-drag-from-outside.html @@ -0,0 +1,24 @@ + + + + + + + + RGL Example 15 - Drag From Outside + + +

    React-Grid-Layout Demo 15 - Drag From Outside

    + +

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    +

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    +
    + + diff --git a/examples/16-drag-from-outside.html b/examples/16-drag-from-outside.html deleted file mode 100644 index 9261c18c0..000000000 --- a/examples/16-drag-from-outside.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - RGL Example 16 - Drag From Outside - - -

    React-Grid-Layout Demo 16 - Drag From Outside

    - -

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    -

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    -
    - - diff --git a/examples/2-no-dragging.html b/examples/2-no-dragging.html index 5366bad13..90acd5e54 100644 --- a/examples/2-no-dragging.html +++ b/examples/2-no-dragging.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 2 - No Dragging

  • View the previous example: "Basic"
  • View the next example: "Messy"
  • - -

    This particular example has dragging and resizing turned off.

    -
    + +

    This particular example has dragging and resizing turned off.

    +
    diff --git a/examples/3-messy.html b/examples/3-messy.html index 9e5f509e7..1a48371d5 100644 --- a/examples/3-messy.html +++ b/examples/3-messy.html @@ -18,10 +18,10 @@

    React-Grid-Layout Demo 3 - Messy

  • View the previous example: "No Dragging"
  • View the next example: "Grid Item Properties"
  • - -

    This demo shows what happens when elements are placed randomly all over the layout.

    -

    RGL does not auto-pack in the same fashion as other projects, such as jQuery Masonry. Packing is only done in the vertical dimension. If objects all have the same width, they will be packed efficiently.

    -

    If a layout is fed to RGL that has items with incorrect dimensions (width too big, overlapping other elements, out of bounds, etc), they will be automatically corrected on startup. See the source of this demo, where elements are placed randomly in the layout.

    -
    + +

    This demo shows what happens when elements are placed randomly all over the layout.

    +

    RGL does not auto-pack in the same fashion as other projects, such as jQuery Masonry. Packing is only done in the vertical dimension. If objects all have the same width, they will be packed efficiently.

    +

    If a layout is fed to RGL that has items with incorrect dimensions (width too big, overlapping other elements, out of bounds, etc), they will be automatically corrected on startup. See the source of this demo, where elements are placed randomly in the layout.

    +
    diff --git a/examples/4-grid-property.html b/examples/4-grid-property.html index db0a2cf21..39eb33d85 100644 --- a/examples/4-grid-property.html +++ b/examples/4-grid-property.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 4 - Grid Item Properties

  • View the previous example: "Messy"
  • View the next example: "Static Elements"
  • - -

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

    -
    + +

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

    +
    diff --git a/examples/5-static-elements.html b/examples/5-static-elements.html index dc65d63c3..442643fd8 100644 --- a/examples/5-static-elements.html +++ b/examples/5-static-elements.html @@ -18,8 +18,8 @@

    React-Grid-Layout Demo 5 - Static Elements

  • View the previous example: "Grid Item Properties"
  • View the next example: "Dynamic Add/Remove"
  • - -

    This demo sets an item to static. Static elements cannot be moved or resized. Other elements move themselves around a static element.

    -
    + +

    This demo sets an item to static. Static elements cannot be moved or resized. Other elements move themselves around a static element.

    +
    diff --git a/examples/6-dynamic-add-remove.html b/examples/6-dynamic-add-remove.html index 126f8d3ac..35d9f76ec 100644 --- a/examples/6-dynamic-add-remove.html +++ b/examples/6-dynamic-add-remove.html @@ -18,10 +18,10 @@

    React-Grid-Layout Demo 6 - Dynamic Add/Remove

  • View the previous example: "Static Elements"
  • View the next example: "LocalStorage"
  • - -

    This demo shows what happens when items are dynamically added and removed.

    -

    You can remove an item by clicking its "x", and add a new one with the button.

    -

    To further illustration RGL's capacities, this particular example is responsive. Trying resizing the window.

    -
    + +

    This demo shows what happens when items are dynamically added and removed.

    +

    You can remove an item by clicking its "x", and add a new one with the button.

    +

    To further illustration RGL's capacities, this particular example is responsive. Trying resizing the window.

    +
    diff --git a/examples/7-localstorage.html b/examples/7-localstorage.html index 3a8aae748..9d09a2b1d 100644 --- a/examples/7-localstorage.html +++ b/examples/7-localstorage.html @@ -18,9 +18,9 @@

    React-Grid-Layout Demo 7 - LocalStorage

  • View the previous example: "Dynamic Add/Remove"
  • View the next example: "Responsive with LocalStorage"
  • - -

    This simple demo synchronizes to localStorage.

    -

    Try moving and resizing elements, then reloading.

    -
    + +

    This simple demo synchronizes to localStorage.

    +

    Try moving and resizing elements, then reloading.

    +
    diff --git a/examples/8-localstorage-responsive.html b/examples/8-localstorage-responsive.html index 67ed90aee..590b7b9c0 100644 --- a/examples/8-localstorage-responsive.html +++ b/examples/8-localstorage-responsive.html @@ -18,10 +18,10 @@

    React-Grid-Layout Demo 8 - Responsive with LocalStorage

  • View the previous example: "LocalStorage"
  • View the next example: "Minimum and Maximum Width/Height"
  • - -

    This simple demo synchronizes to localStorage for each responsive breakpoint.

    -

    Try moving and resizing elements, changing window width, moving some more, and refreshing.

    -

    Each breakpoint has a separate layout. The onLayoutChange callback calls back with a hash of breakpoints to layouts, which is then synchronized to localStorage.

    -
    + +

    This simple demo synchronizes to localStorage for each responsive breakpoint.

    +

    Try moving and resizing elements, changing window width, moving some more, and refreshing.

    +

    Each breakpoint has a separate layout. The onLayoutChange callback calls back with a hash of breakpoints to layouts, which is then synchronized to localStorage.

    +
    diff --git a/examples/9-min-max-wh.html b/examples/9-min-max-wh.html index 193ca12af..c06b2dcad 100644 --- a/examples/9-min-max-wh.html +++ b/examples/9-min-max-wh.html @@ -18,10 +18,10 @@

    React-Grid-Layout Demo 9 - Minimum and Maximum Width/Height

  • View the previous example: "Responsive with LocalStorage"
  • View the next example: "Dynamic Minimum and Maximum Width/Height"
  • - -

    You can set min and max dimensions on a grid item by using the `minW`, `maxW`, `minH`, and `maxH` properties.

    -

    In this demo, the min and max dimensions are generated automatically. Try resizing the items below.

    -

    If your mins and maxes collide: for example min > max, or the initial dimensions are out of range, an error will be thrown.

    -
    + +

    You can set min and max dimensions on a grid item by using the `minW`, `maxW`, `minH`, and `maxH` properties.

    +

    In this demo, the min and max dimensions are generated automatically. Try resizing the items below.

    +

    If your mins and maxes collide: for example min > max, or the initial dimensions are out of range, an error will be thrown.

    +
    diff --git a/test/examples/16-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx similarity index 100% rename from test/examples/16-drag-from-outside.jsx rename to test/examples/15-drag-from-outside.jsx From 3d4e863a0d4956b2d91542dfea4eaf52ff8e3a94 Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Wed, 14 Aug 2019 17:08:49 +0300 Subject: [PATCH 009/101] fix: replace componentWillReceiveProps by getDerivedStateFromProps and componentDidUpdate - fix warnings - fix performance issues --- lib/GridItem.jsx | 256 +++++++++++++++++++----------- lib/ReactGridLayout.jsx | 81 +++++++--- lib/ResponsiveReactGridLayout.jsx | 33 ++-- 3 files changed, 240 insertions(+), 130 deletions(-) diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 970f07b81..d9b00fba9 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -171,11 +171,17 @@ export default class GridItem extends React.Component { currentNode: HTMLElement; - componentWillReceiveProps(nextProps: Props) { - const { droppingPosition } = nextProps; + componentDidUpdate(prevProps: Props) { + if (this.props.droppingPosition && prevProps.droppingPosition) { + this.moveDroppingItem(prevProps); + } + } + + moveDroppingItem(prevProps: Props) { + const { droppingPosition } = this.props; const { dragging } = this.state; - if (!droppingPosition || !this.props.droppingPosition) { + if (!droppingPosition || !prevProps.droppingPosition) { return; } @@ -184,20 +190,21 @@ export default class GridItem extends React.Component { this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement); } + const shouldDrag = + (dragging && droppingPosition.x !== prevProps.droppingPosition.x) || + droppingPosition.y !== prevProps.droppingPosition.y; + if (!dragging) { - this.onDragHandler("onDragStart")(droppingPosition.e, { + this.onDragStart(droppingPosition.e, { node: this.currentNode, deltaX: droppingPosition.x, deltaY: droppingPosition.y }); - } else if ( - (dragging && droppingPosition.x !== this.props.droppingPosition.x) || - droppingPosition.y !== this.props.droppingPosition.y - ) { + } else if (shouldDrag) { const deltaX = droppingPosition.x - dragging.left; const deltaY = droppingPosition.y - dragging.top; - this.onDragHandler("onDrag")(droppingPosition.e, { + this.onDrag(droppingPosition.e, { node: this.currentNode, deltaX, deltaY @@ -355,9 +362,9 @@ export default class GridItem extends React.Component { mixinDraggable(child: ReactElement): ReactElement { return ( { height={position.height} minConstraints={minConstraints} maxConstraints={maxConstraints} - onResizeStop={this.onResizeHandler("onResizeStop")} - onResizeStart={this.onResizeHandler("onResizeStart")} - onResize={this.onResizeHandler("onResize")} + onResizeStop={this.onResizeStop} + onResizeStart={this.onResizeStart} + onResize={this.onResize} > {child} @@ -408,94 +415,161 @@ export default class GridItem extends React.Component { } /** - * Wrapper around drag events to provide more useful data. - * All drag events call the function with the given handler name, - * with the signature (index, x, y). - * - * @param {String} handlerName Handler name to wrap. - * @return {Function} Handler function. + * onDragStart event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node, delta and position information */ - onDragHandler(handlerName: string) { - return (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => { - const handler = this.props[handlerName]; - if (!handler) return; - - const newPosition: PartialPosition = { top: 0, left: 0 }; - - // Get new XY - switch (handlerName) { - case "onDragStart": { - // TODO: this wont work on nested parents - const { offsetParent } = node; - if (!offsetParent) return; - const parentRect = offsetParent.getBoundingClientRect(); - const clientRect = node.getBoundingClientRect(); - newPosition.left = - clientRect.left - parentRect.left + offsetParent.scrollLeft; - newPosition.top = - clientRect.top - parentRect.top + offsetParent.scrollTop; - this.setState({ dragging: newPosition }); - break; - } - case "onDrag": - if (!this.state.dragging) - throw new Error("onDrag called before onDragStart."); - newPosition.left = this.state.dragging.left + deltaX; - newPosition.top = this.state.dragging.top + deltaY; - this.setState({ dragging: newPosition }); - break; - case "onDragStop": - if (!this.state.dragging) - throw new Error("onDragEnd called before onDragStart."); - newPosition.left = this.state.dragging.left; - newPosition.top = this.state.dragging.top; - this.setState({ dragging: null }); - break; - default: - throw new Error( - "onDragHandler called with unrecognized handlerName: " + handlerName - ); - } + onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => { + if (!this.props.onDragStart) return; - const { x, y } = this.calcXY(newPosition.top, newPosition.left); + const newPosition: PartialPosition = { top: 0, left: 0 }; - return handler.call(this, this.props.i, x, y, { e, node, newPosition }); - }; - } + // TODO: this wont work on nested parents + const { offsetParent } = node; + if (!offsetParent) return; + const parentRect = offsetParent.getBoundingClientRect(); + const clientRect = node.getBoundingClientRect(); + newPosition.left = + clientRect.left - parentRect.left + offsetParent.scrollLeft; + newPosition.top = clientRect.top - parentRect.top + offsetParent.scrollTop; + this.setState({ dragging: newPosition }); + + const { x, y } = this.calcXY(newPosition.top, newPosition.left); + + return ( + this.props.onDragStart && + this.props.onDragStart.call(this, this.props.i, x, y, { + e, + node, + newPosition + }) + ); + }; /** - * Wrapper around drag events to provide more useful data. - * All drag events call the function with the given handler name, - * with the signature (index, x, y). - * - * @param {String} handlerName Handler name to wrap. - * @return {Function} Handler function. + * onDrag event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node, delta and position information */ - onResizeHandler(handlerName: string) { + onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => { + if (!this.props.onDrag) return; + + const newPosition: PartialPosition = { top: 0, left: 0 }; + + if (!this.state.dragging) + throw new Error("onDrag called before onDragStart."); + newPosition.left = this.state.dragging.left + deltaX; + newPosition.top = this.state.dragging.top + deltaY; + this.setState({ dragging: newPosition }); + + const { x, y } = this.calcXY(newPosition.top, newPosition.left); + return ( - e: Event, - { node, size }: { node: HTMLElement, size: Position } - ) => { - const handler = this.props[handlerName]; - if (!handler) return; - const { cols, x, i, maxW, minW, maxH, minH } = this.props; + this.props.onDrag && + this.props.onDrag.call(this, this.props.i, x, y, { + e, + node, + newPosition + }) + ); + }; - // Get new XY - let { w, h } = this.calcWH(size); + /** + * onDragStop event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node, delta and position information + */ + onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => { + if (!this.props.onDragStop) return; - // Cap w at numCols - w = Math.min(w, cols - x); - // Ensure w is at least 1 - w = Math.max(w, 1); + const newPosition: PartialPosition = { top: 0, left: 0 }; - // Min/max capping - w = Math.max(Math.min(w, maxW), minW); - h = Math.max(Math.min(h, maxH), minH); + if (!this.state.dragging) + throw new Error("onDragEnd called before onDragStart."); + newPosition.left = this.state.dragging.left; + newPosition.top = this.state.dragging.top; + this.setState({ dragging: null }); - this.setState({ resizing: handlerName === "onResizeStop" ? null : size }); + const { x, y } = this.calcXY(newPosition.top, newPosition.left); - handler.call(this, i, w, h, { e, node, size }); - }; + return ( + this.props.onDragStop && + this.props.onDragStop.call(this, this.props.i, x, y, { + e, + node, + newPosition + }) + ); + }; + + /** + * onResizeStop event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node and size information + */ + onResizeStop = ( + e: Event, + callbackData: { node: HTMLElement, size: Position } + ) => { + this.onResizeHandler(e, callbackData, "onResizeStop"); + }; + + /** + * onResizeStart event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node and size information + */ + onResizeStart = ( + e: Event, + callbackData: { node: HTMLElement, size: Position } + ) => { + this.onResizeHandler(e, callbackData, "onResizeStart"); + }; + + /** + * onResize event handler + * @param {Event} e event data + * @param {Object} callbackData an object with node and size information + */ + onResize = ( + e: Event, + callbackData: { node: HTMLElement, size: Position } + ) => { + this.onResizeHandler(e, callbackData, "onResize"); + }; + + /** + * Wrapper around drag events to provide more useful data. + * All drag events call the function with the given handler name, + * with the signature (index, x, y). + * + * @param {String} handlerName Handler name to wrap. + * @return {Function} Handler function. + */ + onResizeHandler( + e: Event, + { node, size }: { node: HTMLElement, size: Position }, + handlerName: string + ) { + const handler = this.props[handlerName]; + if (!handler) return; + const { cols, x, i, maxW, minW, maxH, minH } = this.props; + + // Get new XY + let { w, h } = this.calcWH(size); + + // Cap w at numCols + w = Math.min(w, cols - x); + // Ensure w is at least 1 + w = Math.max(w, 1); + + // Min/max capping + w = Math.max(Math.min(w, maxW), minW); + h = Math.max(Math.min(h, maxH), minH); + + this.setState({ resizing: handlerName === "onResizeStop" ? null : size }); + + handler.call(this, i, w, h, { e, node, size }); } render(): ReactNode { diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 803575d0e..f26141710 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -42,7 +42,11 @@ type State = { oldLayout: ?Layout, oldResizeItem: ?LayoutItem, droppingDOMNode: ?ReactElement, - droppingPosition?: DroppingPosition + droppingPosition?: DroppingPosition, + // Mirrored props + children: ReactChildrenArray>, + compactType?: CompactType, + propsLayout?: Layout }; export type Props = { @@ -54,7 +58,7 @@ export type Props = { draggableCancel: string, draggableHandle: string, verticalCompact: boolean, - compactType: ?("horizontal" | "vertical"), + compactType: CompactType, layout: Layout, margin: [number, number], containerPadding: [number, number] | null, @@ -85,6 +89,12 @@ export type Props = { }; // End Types +const compactType = (props: Props): CompactType => { + const { verticalCompact, compactType } = props || {}; + + return verticalCompact === false ? null : compactType; +}; + /** * A reactive, fluid grid layout with draggable, resizable components. */ @@ -262,13 +272,14 @@ export default class ReactGridLayout extends React.Component { this.props.children, this.props.cols, // Legacy support for verticalCompact: false - this.compactType() + compactType(this.props) ), mounted: false, oldDragItem: null, oldLayout: null, oldResizeItem: null, - droppingDOMNode: null + droppingDOMNode: null, + children: [] }; constructor(props: Props, context: any): void { @@ -290,20 +301,25 @@ export default class ReactGridLayout extends React.Component { this.onLayoutMaybeChanged(this.state.layout, this.props.layout); } - componentWillReceiveProps(nextProps: Props) { + static getDerivedStateFromProps(nextProps: Props, prevState: State) { let newLayoutBase; + + if (prevState.activeDrag) { + return null; + } + // Legacy support for compactType // Allow parent to set layout directly. if ( - !isEqual(nextProps.layout, this.props.layout) || - nextProps.compactType !== this.props.compactType + !isEqual(nextProps.layout, prevState.propsLayout) || + nextProps.compactType !== prevState.compactType ) { newLayoutBase = nextProps.layout; - } else if (!childrenEqual(this.props.children, nextProps.children)) { + } else if (!childrenEqual(nextProps.children, prevState.children)) { // If children change, also regenerate the layout. Use our state // as the base in case because it may be more up to date than // what is in props. - newLayoutBase = this.state.layout; + newLayoutBase = prevState.layout; } // We need to regenerate the layout. @@ -312,10 +328,27 @@ export default class ReactGridLayout extends React.Component { newLayoutBase, nextProps.children, nextProps.cols, - this.compactType(nextProps) + compactType(nextProps) ); - const oldLayout = this.state.layout; - this.setState({ layout: newLayout }); + + return { + layout: newLayout, + // We need to save these props to state for using + // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender) + compactType: nextProps.compactType, + children: nextProps.children, + propsLayout: nextProps.layout + }; + } + + return null; + } + + componentDidUpdate(prevProps: Props, prevState: State) { + if (!this.state.activeDrag) { + const newLayout = this.state.layout; + const oldLayout = prevState.layout; + this.onLayoutMaybeChanged(newLayout, oldLayout); } } @@ -338,11 +371,6 @@ export default class ReactGridLayout extends React.Component { ); } - compactType(props: ?Object): CompactType { - if (!props) props = this.props; - return props.verticalCompact === false ? null : props.compactType; - } - /** * When dragging starts * @param {String} i Id of the child @@ -398,14 +426,14 @@ export default class ReactGridLayout extends React.Component { y, isUserAction, this.props.preventCollision, - this.compactType(), + compactType(this.props), cols ); this.props.onDrag(layout, oldDragItem, l, placeholder, e, node); this.setState({ - layout: compact(layout, this.compactType(), cols), + layout: compact(layout, compactType(this.props), cols), activeDrag: placeholder }); } @@ -434,14 +462,14 @@ export default class ReactGridLayout extends React.Component { y, isUserAction, preventCollision, - this.compactType(), + compactType(this.props), cols ); this.props.onDragStop(layout, oldDragItem, l, null, e, node); // Set state - const newLayout = compact(layout, this.compactType(), cols); + const newLayout = compact(layout, compactType(this.props), cols); const { oldLayout } = this.state; this.setState({ activeDrag: null, @@ -455,6 +483,7 @@ export default class ReactGridLayout extends React.Component { onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) { if (!oldLayout) oldLayout = this.state.layout; + if (!isEqual(oldLayout, newLayout)) { this.props.onLayoutChange(newLayout); } @@ -523,7 +552,7 @@ export default class ReactGridLayout extends React.Component { // Re-compact the layout and set the drag placeholder. this.setState({ - layout: compact(layout, this.compactType(), cols), + layout: compact(layout, compactType(this.props), cols), activeDrag: placeholder }); } @@ -536,7 +565,7 @@ export default class ReactGridLayout extends React.Component { this.props.onResizeStop(layout, oldResizeItem, l, null, e, node); // Set state - const newLayout = compact(layout, this.compactType(), cols); + const newLayout = compact(layout, compactType(this.props), cols); const { oldLayout } = this.state; this.setState({ activeDrag: null, @@ -700,7 +729,7 @@ export default class ReactGridLayout extends React.Component { const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {}; const newLayout = compact( layout.filter(l => l.i !== droppingItem.i), - this.compactType(), + compactType(this.props), cols ); @@ -727,8 +756,8 @@ export default class ReactGridLayout extends React.Component {
    {React.Children.map(this.props.children, child => this.processGridItem(child) diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 3f5ecbb5d..1b9cb859a 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -23,7 +23,8 @@ const type = obj => Object.prototype.toString.call(obj); type State = { layout: Layout, breakpoint: string, - cols: number + cols: number, + layouts?: { [key: string]: Layout } }; type Props = { @@ -142,18 +143,10 @@ export default class ResponsiveReactGridLayout extends React.Component< }; } - componentWillReceiveProps(nextProps: Props<*>) { - // Allow parent to set width or breakpoint directly. - if ( - nextProps.width != this.props.width || - nextProps.breakpoint !== this.props.breakpoint || - !isEqual(nextProps.breakpoints, this.props.breakpoints) || - !isEqual(nextProps.cols, this.props.cols) - ) { - this.onWidthChange(nextProps); - } else if (!isEqual(nextProps.layouts, this.props.layouts)) { + static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) { + if (!isEqual(nextProps.layouts, prevState.layouts)) { // Allow parent to set layouts directly. - const { breakpoint, cols } = this.state; + const { breakpoint, cols } = prevState; // Since we're setting an entirely new layout object, we must generate a new responsive layout // if one does not exist. @@ -165,7 +158,21 @@ export default class ResponsiveReactGridLayout extends React.Component< cols, nextProps.compactType ); - this.setState({ layout: newLayout }); + return { layout: newLayout, layouts: nextProps.layouts }; + } + + return null; + } + + componentDidUpdate(prevProps: Props<*>) { + // Allow parent to set width or breakpoint directly. + if ( + this.props.width != prevProps.width || + this.props.breakpoint !== prevProps.breakpoint || + !isEqual(this.props.breakpoints, prevProps.breakpoints) || + !isEqual(this.props.cols, prevProps.cols) + ) { + this.onWidthChange(this.props); } } From 5826c18ff8666d2ab7ad48899fa610a70adb5cf3 Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Sun, 15 Sep 2019 12:40:08 +0300 Subject: [PATCH 010/101] chore: update FlowType version --- .flowconfig | 2 +- interfaces/classnames.js | 1 + package.json | 4 ++-- test/spec/utils-test.js | 5 ++++- yarn.lock | 23 ++++++++++++++--------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/.flowconfig b/.flowconfig index fd497b549..3f39cda91 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,5 @@ [version] -0.65.0 +0.107.0 [ignore] diff --git a/interfaces/classnames.js b/interfaces/classnames.js index 9c4b5b5ea..95333f276 100644 --- a/interfaces/classnames.js +++ b/interfaces/classnames.js @@ -1,3 +1,4 @@ +// @flow // flow-typed signature: 3fba12a77525f37b0492c8dab3e04f0e // flow-typed version: 94e9f7e0a4/classnames_v2.x.x/flow_>=v0.28.x diff --git a/package.json b/package.json index 919709e90..3f17c8ac8 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,11 @@ "css-loader": "^0.28.9", "ejs": "^2.4.1", "eslint": "^4.17.0", - "eslint-plugin-flowtype": "^2.44.0", + "eslint-plugin-flowtype": "^4.3.0", "eslint-plugin-mocha": "^4.11.0", "eslint-plugin-react": "^7.6.1", "exports-loader": "^0.7.0", - "flow-bin": "^0.65.0", + "flow-bin": "^0.107.0", "husky": "^0.14.3", "imports-loader": "^0.7.1", "jest-cli": "^22.3.0", diff --git a/test/spec/utils-test.js b/test/spec/utils-test.js index 9a6a358ed..9e95530c5 100644 --- a/test/spec/utils-test.js +++ b/test/spec/utils-test.js @@ -13,7 +13,10 @@ import { /*:: declare function describe(name: string, fn: Function): void; */ /*:: declare function it(name: string, fn: Function): void; */ -/*:: declare function expect(any): any; */ +/*:: declare var expect: { + (any): any, + objectContaining(params: any): any +}; */ describe("bottom", () => { it("Handles an empty layout as input", () => { diff --git a/yarn.lock b/yarn.lock index 36af99f20..866e16eed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2758,12 +2758,12 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-plugin-flowtype@^2.44.0: - version "2.50.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" - integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== +eslint-plugin-flowtype@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.3.0.tgz#06d0837ac341caf369e7e6dbb112dd7fd21acf17" + integrity sha512-elvqoadMHnYqSYN1YXn02DR7SFW8Kc2CLe8na3m2GdQPQhIY+BgCd2quVJ1AbW3aO0zcyE9loVJ7Szy8A/xlMA== dependencies: - lodash "^4.17.10" + lodash "^4.17.15" eslint-plugin-mocha@^4.11.0: version "4.12.1" @@ -3350,10 +3350,10 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= -flow-bin@^0.65.0: - version "0.65.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.65.0.tgz#64ffeca27211c786e2d68508c65686ba1b8a2169" - integrity sha512-/Ny7pElDdmwgxq8ALf87/MylzXWAh2Kny1kxGUOG1TxwGEQMctgENtLpuwx8fwvlIUebgJWF8ylhWOcmiNKDpA== +flow-bin@^0.107.0: + version "0.107.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.107.0.tgz#b37bfcce51204d35d58f8eb93b3a76b52291e4cc" + integrity sha512-hsmwO5Q0+XUXaO2kIKLpleUNNBSFcsGEQGBOTEC/KR/4Ez695I1fweX/ioSjbU4RWhPZhkIqnpbF9opVAauCHg== flush-write-stream@^1.0.0: version "1.0.3" @@ -5124,6 +5124,11 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" From 4e8f11f4d98befbfab372f58f5dcd3dc0fa6dd88 Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 16 Sep 2019 13:23:59 +0300 Subject: [PATCH 011/101] Fix for the drag-from-outside example --- README.md | 2 +- examples/15-drag-from-outside.html | 6 +++--- examples/vars.js | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 28f348a31..c6ef3c87e 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ RGL is React-only and does not require jQuery. 1. [Prevent Collision](https://strml.github.io/react-grid-layout/examples/12-prevent-collision.html) 1. [Error Case](https://strml.github.io/react-grid-layout/examples/13-error-case.html) 1. [Toolbox](https://strml.github.io/react-grid-layout/examples/14-toolbox.html) -1. [Drag From Outside](https://strml.github.io/react-grid-layout/examples/16-drag-from-outside.html) +1. [Drag From Outside](https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html) #### Projects Using React-Grid-Layout diff --git a/examples/15-drag-from-outside.html b/examples/15-drag-from-outside.html index 789506d06..99865ae55 100644 --- a/examples/15-drag-from-outside.html +++ b/examples/15-drag-from-outside.html @@ -15,10 +15,10 @@

    React-Grid-Layout Demo 15 - Drag From Outside

  • View project on GitHub
  • View this example's source
  • -
  • View the next example: "Basic"
  • +
  • View the previous example: "Toolbox"
  • -

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    -

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    +

    This demo shows what happens when an item is added from outside of the grid.

    +

    Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with it accordingly.

    diff --git a/examples/vars.js b/examples/vars.js index cb8cfe310..9b6f5dda4 100644 --- a/examples/vars.js +++ b/examples/vars.js @@ -130,5 +130,14 @@ module.exports = [ paragraphs: [ "This demonstrates how to implement a toolbox to add and remove widgets." ] + }, + { + title: "Drag From Outside", + source: "drag-from-outside", + paragraphs: [ + "This demo shows what happens when an item is added from outside of the grid.", + "Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with " + + "it accordingly." + ] } ]; From c9471692dfd4bb663b0545b22ff73e1b390377e9 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 18 Sep 2019 17:37:19 -0700 Subject: [PATCH 012/101] fix(yarn): dedupe lodash --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 866e16eed..20add266a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5119,12 +5119,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -lodash@^4.17.15: +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== From 779e8d2d0d410d1e0e145fc7d4a174798a3f66e6 Mon Sep 17 00:00:00 2001 From: Thanks Date: Fri, 20 Sep 2019 16:32:52 +0800 Subject: [PATCH 013/101] feat: add transformScale (#987) * feat: add transformScale prop --- README.md | 3 +++ lib/GridItem.jsx | 14 ++++++++++---- lib/ReactGridLayout.jsx | 10 +++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c6ef3c87e..033b16fc5 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,9 @@ isResizable: ?boolean = true, // Uses CSS3 translate() instead of position top/left. // This makes about 6x faster paint performance useCSSTransforms: ?boolean = true, +// If parent DOM node of ResponsiveReactGridLayout or ReactGridLayout has "transform: scale(n)" css property, +// we should set scale coefficient to avoid render artefacts while dragging. +transformScale: ?number = 1, // If true, grid items won't change position when being // dragged over. diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index d9b00fba9..1cb9fc843 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -43,6 +43,7 @@ type Props = { static?: boolean, useCSSTransforms?: boolean, usePercentages?: boolean, + transformScale: number, droppingPosition?: DroppingPosition, className: string, @@ -139,6 +140,7 @@ export default class GridItem extends React.Component { // Use CSS transforms instead of top/left useCSSTransforms: PropTypes.bool.isRequired, + transformScale: PropTypes.number, // Others className: PropTypes.string, @@ -160,7 +162,8 @@ export default class GridItem extends React.Component { minH: 1, minW: 1, maxH: Infinity, - maxW: Infinity + maxW: Infinity, + transformScale: 1 }; state: State = { @@ -429,9 +432,12 @@ export default class GridItem extends React.Component { if (!offsetParent) return; const parentRect = offsetParent.getBoundingClientRect(); const clientRect = node.getBoundingClientRect(); - newPosition.left = - clientRect.left - parentRect.left + offsetParent.scrollLeft; - newPosition.top = clientRect.top - parentRect.top + offsetParent.scrollTop; + const cLeft = clientRect.left / this.props.transformScale; + const pLeft = parentRect.left / this.props.transformScale; + const cTop = clientRect.top / this.props.transformScale; + const pTop = parentRect.top / this.props.transformScale; + newPosition.left = cLeft - pLeft + offsetParent.scrollLeft; + newPosition.top = cTop - pTop + offsetParent.scrollTop; this.setState({ dragging: newPosition }); const { x, y } = this.calcXY(newPosition.top, newPosition.left); diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index f26141710..16b18ae10 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -69,6 +69,7 @@ export type Props = { isDroppable: boolean, preventCollision: boolean, useCSSTransforms: boolean, + transformScale: number, droppingItem: $Shape, // Callbacks @@ -176,6 +177,8 @@ export default class ReactGridLayout extends React.Component { preventCollision: PropTypes.bool, // Use CSS transforms instead of top/left useCSSTransforms: PropTypes.bool, + // parent layout transform scale + transformScale: PropTypes.number, // If true, an external element can trigger onDrop callback with a specific grid position as a parameter isDroppable: PropTypes.bool, @@ -247,6 +250,7 @@ export default class ReactGridLayout extends React.Component { isResizable: true, isDroppable: false, useCSSTransforms: true, + transformScale: 1, verticalCompact: true, compactType: "vertical", preventCollision: false, @@ -591,7 +595,8 @@ export default class ReactGridLayout extends React.Component { containerPadding, rowHeight, maxRows, - useCSSTransforms + useCSSTransforms, + transformScale } = this.props; // {...this.state.activeDrag} is pretty slow, actually @@ -612,6 +617,7 @@ export default class ReactGridLayout extends React.Component { isDraggable={false} isResizable={false} useCSSTransforms={useCSSTransforms} + transformScale={transformScale} >
    @@ -640,6 +646,7 @@ export default class ReactGridLayout extends React.Component { isDraggable, isResizable, useCSSTransforms, + transformScale, draggableCancel, draggableHandle } = this.props; @@ -673,6 +680,7 @@ export default class ReactGridLayout extends React.Component { isResizable={resizable} useCSSTransforms={useCSSTransforms && mounted} usePercentages={!mounted} + transformScale={transformScale} w={l.w} h={l.h} x={l.x} From 4af61ffc59dd46f06550ffd666e3b18735f0859c Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Fri, 27 Sep 2019 09:38:13 -0400 Subject: [PATCH 014/101] chore(lint): fix minor lint errors --- .eslintrc.json | 5 +++++ lib/GridItem.jsx | 1 + 2 files changed, 6 insertions(+) diff --git a/.eslintrc.json b/.eslintrc.json index 909358744..d70ab8e86 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -20,5 +20,10 @@ "browser": true, "node": true, "es6": true + }, + "settings": { + "react": { + "version": "detect" + } } } diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 1cb9fc843..4cfc1b9b6 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -150,6 +150,7 @@ export default class GridItem extends React.Component { cancel: PropTypes.string, // Current position of a dropping element droppingPosition: PropTypes.shape({ + e: PropTypes.object.isRequired, x: PropTypes.number.isRequired, y: PropTypes.number.isRequired }) From 77547d61b16cd3a62a938c7772fcf8f0cebb8a5d Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Fri, 27 Sep 2019 09:41:09 -0400 Subject: [PATCH 015/101] chore(lint): apply prettier on existing files --- examples/generate.js | 19 +++++---- examples/vars.js | 4 +- index-dev.js | 10 ++--- index.js | 10 ++--- index.js.flow | 12 +++--- lib/utils.js | 12 ++++-- test/examples/14-toolbox.jsx | 10 ++--- test/examples/15-drag-from-outside.jsx | 10 ++--- webpack-dev-server.config.js | 30 +++++++------ webpack-examples.config.js | 59 ++++++++++++++------------ webpack.config.js | 24 +++++------ 11 files changed, 107 insertions(+), 93 deletions(-) diff --git a/examples/generate.js b/examples/generate.js index 5f9295b0c..363f3c3eb 100644 --- a/examples/generate.js +++ b/examples/generate.js @@ -1,12 +1,13 @@ -'use strict'; -var fs = require('fs'); -var ejs = require('ejs'); -var data = require('./vars'); -var tpl = fs.readFileSync(__dirname + '/template.ejs').toString(); +"use strict"; +var fs = require("fs"); +var ejs = require("ejs"); +var data = require("./vars"); +var tpl = fs.readFileSync(__dirname + "/template.ejs").toString(); -var base = 'http://localhost:4002'; -var banner = 'Do not edit this file! It is generated by `generate.js` in this folder, from `template.ejs` and ' + - 'vars.js.'; +var base = "http://localhost:4002"; +var banner = + "Do not edit this file! It is generated by `generate.js` in this folder, from `template.ejs` and " + + "vars.js."; data.forEach(function(datum, i) { datum.base = base; @@ -15,5 +16,5 @@ data.forEach(function(datum, i) { datum.previous = data[i - 1]; datum.next = data[i + 1]; var html = ejs.render(tpl, datum); - fs.writeFileSync(__dirname + '/' + i + '-' + datum.source + '.html', html); + fs.writeFileSync(__dirname + "/" + i + "-" + datum.source + ".html", html); }); diff --git a/examples/vars.js b/examples/vars.js index 9b6f5dda4..0b5ef4285 100644 --- a/examples/vars.js +++ b/examples/vars.js @@ -136,8 +136,8 @@ module.exports = [ source: "drag-from-outside", paragraphs: [ "This demo shows what happens when an item is added from outside of the grid.", - "Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with " + - "it accordingly." + "Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with " + + "it accordingly." ] } ]; diff --git a/index-dev.js b/index-dev.js index 55749147e..fd469050d 100644 --- a/index-dev.js +++ b/index-dev.js @@ -1,5 +1,5 @@ -module.exports = require('./lib/ReactGridLayout').default; -module.exports.utils = require('./lib/utils'); -module.exports.Responsive = require('./lib/ResponsiveReactGridLayout').default; -module.exports.Responsive.utils = require('./lib/responsiveUtils'); -module.exports.WidthProvider = require('./lib/components/WidthProvider').default; +module.exports = require("./lib/ReactGridLayout").default; +module.exports.utils = require("./lib/utils"); +module.exports.Responsive = require("./lib/ResponsiveReactGridLayout").default; +module.exports.Responsive.utils = require("./lib/responsiveUtils"); +module.exports.WidthProvider = require("./lib/components/WidthProvider").default; diff --git a/index.js b/index.js index 2455aa050..307708f34 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ -module.exports = require('./build/ReactGridLayout').default; -module.exports.utils = require('./build/utils'); -module.exports.Responsive = require('./build/ResponsiveReactGridLayout').default; -module.exports.Responsive.utils = require('./build/responsiveUtils'); -module.exports.WidthProvider = require('./build/components/WidthProvider').default; +module.exports = require("./build/ReactGridLayout").default; +module.exports.utils = require("./build/utils"); +module.exports.Responsive = require("./build/ResponsiveReactGridLayout").default; +module.exports.Responsive.utils = require("./build/responsiveUtils"); +module.exports.WidthProvider = require("./build/components/WidthProvider").default; diff --git a/index.js.flow b/index.js.flow index 6c5fe619d..880e03a4c 100644 --- a/index.js.flow +++ b/index.js.flow @@ -1,10 +1,8 @@ // @flow -import * as utils from './lib/utils'; -export { default } from './lib/ReactGridLayout'; -export { default as Responsive } from './lib/ResponsiveReactGridLayout'; -export { default as WidthProvider } from './lib/components/WidthProvider'; +import * as utils from "./lib/utils"; +export { default } from "./lib/ReactGridLayout"; +export { default as Responsive } from "./lib/ResponsiveReactGridLayout"; +export { default as WidthProvider } from "./lib/components/WidthProvider"; -export { - utils -}; +export { utils }; diff --git a/lib/utils.js b/lib/utils.js index 243005f26..3037657df 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -368,7 +368,9 @@ export function moveElement( // Short-circuit if nothing to do. if (l.y === y && l.x === x) return layout; - log(`Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`); + log( + `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]` + ); const oldX = l.x; const oldY = l.y; @@ -383,9 +385,11 @@ export function moveElement( // nearest collision. let sorted = sortLayoutItems(layout, compactType); const movingUp = - compactType === "vertical" && typeof y === "number" ? oldY >= y - : compactType === "horizontal" && typeof x === "number" ? oldX >= x - : false; + compactType === "vertical" && typeof y === "number" + ? oldY >= y + : compactType === "horizontal" && typeof x === "number" + ? oldX >= x + : false; if (movingUp) sorted = sorted.reverse(); const collisions = getAllCollisions(sorted, l); diff --git a/test/examples/14-toolbox.jsx b/test/examples/14-toolbox.jsx index c8bb5a320..c0289557d 100644 --- a/test/examples/14-toolbox.jsx +++ b/test/examples/14-toolbox.jsx @@ -95,7 +95,9 @@ class ShowcaseLayout extends React.Component { const compactType = oldCompactType === "horizontal" ? "vertical" - : oldCompactType === "vertical" ? null : "horizontal"; + : oldCompactType === "vertical" + ? null + : "horizontal"; this.setState({ compactType }); }; @@ -152,10 +154,8 @@ class ShowcaseLayout extends React.Component { return (
    - Current Breakpoint: {this.state.currentBreakpoint} ({ - this.props.cols[this.state.currentBreakpoint] - }{" "} - columns) + Current Breakpoint: {this.state.currentBreakpoint} ( + {this.props.cols[this.state.currentBreakpoint]} columns)
    Compaction type:{" "} diff --git a/test/examples/15-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx index ad40ca07e..425efee0d 100644 --- a/test/examples/15-drag-from-outside.jsx +++ b/test/examples/15-drag-from-outside.jsx @@ -53,7 +53,9 @@ class ShowcaseLayout extends React.Component { const compactType = oldCompactType === "horizontal" ? "vertical" - : oldCompactType === "vertical" ? null : "horizontal"; + : oldCompactType === "vertical" + ? null + : "horizontal"; this.setState({ compactType }); }; @@ -75,10 +77,8 @@ class ShowcaseLayout extends React.Component { return (
    - Current Breakpoint: {this.state.currentBreakpoint} ({ - this.props.cols[this.state.currentBreakpoint] - }{" "} - columns) + Current Breakpoint: {this.state.currentBreakpoint} ( + {this.props.cols[this.state.currentBreakpoint]} columns)
    Compaction type:{" "} diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index cd7289ac7..2702e338e 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -1,28 +1,32 @@ -const path = require('path'); +const path = require("path"); var webpack = require("webpack"); module.exports = { - mode: 'development', + mode: "development", context: __dirname, entry: "./test/dev-hook.jsx", output: { - path: '/', + path: "/", filename: "bundle.js", - sourceMapFilename: "[file].map", + sourceMapFilename: "[file].map" }, module: { rules: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: "babel-loader", query: { cacheDirectory: true, plugins: [ - ['react-transform', + [ + "react-transform", { transforms: [ { - transform: 'react-transform-hmr', - imports: ['react'], - locals: ['module'] + transform: "react-transform-hmr", + imports: ["react"], + locals: ["module"] } ] } @@ -35,20 +39,20 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ "process.env": { - NODE_ENV: JSON.stringify('development') + NODE_ENV: JSON.stringify("development") } - }), + }) ], devtool: "eval", devServer: { - publicPath: '/', + publicPath: "/", compress: true, port: 4002 }, resolve: { extensions: [".webpack.js", ".web.js", ".js", ".jsx"], alias: { - 'react-grid-layout': path.join(__dirname, '/index-dev.js') + "react-grid-layout": path.join(__dirname, "/index-dev.js") } } }; diff --git a/webpack-examples.config.js b/webpack-examples.config.js index c2fdab74a..f2bf730f8 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -1,61 +1,68 @@ -'use strict'; -var webpack = require('webpack'); -var fs = require('fs'); +"use strict"; +var webpack = require("webpack"); +var fs = require("fs"); // Builds example bundles module.exports = { - mode: 'development', + mode: "development", context: __dirname, entry: { - commons: ["lodash"], + commons: ["lodash"] }, optimization: { splitChunks: { cacheGroups: { commons: { - name: 'commons', - chunks: 'initial', + name: "commons", + chunks: "initial", minChunks: 2 } } } }, output: { - path: __dirname + "/dist", - filename: "[name].bundle.js", - sourceMapFilename: "[file].map", + path: __dirname + "/dist", + filename: "[name].bundle.js", + sourceMapFilename: "[file].map" }, module: { rules: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query: { - cacheDirectory: true, - plugins: [ - 'transform-react-inline-elements', - 'transform-react-constant-elements', - ] - }} + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: "babel-loader", + query: { + cacheDirectory: true, + plugins: [ + "transform-react-inline-elements", + "transform-react-constant-elements" + ] + } + } ] }, plugins: [ new webpack.DefinePlugin({ "process.env": { - NODE_ENV: JSON.stringify('production') + NODE_ENV: JSON.stringify("production") } - }), + }) ], resolve: { extensions: [".webpack.js", ".web.js", ".js", ".jsx"], - alias: {'react-grid-layout': __dirname + '/index-dev.js'} + alias: { "react-grid-layout": __dirname + "/index-dev.js" } } }; // Load all entry points -var files = fs.readdirSync(__dirname + '/test/examples').filter(function(element, index, array){ +var files = fs + .readdirSync(__dirname + "/test/examples") + .filter(function(element, index, array) { return element.match(/^.+\.jsx$/); -}); + }); -for(var idx in files){ - var file = files[idx]; - var module_name = file.replace(/\.jsx$/,''); - module.exports.entry[module_name] = './test/examples/' + file; +for (var idx in files) { + var file = files[idx]; + var module_name = file.replace(/\.jsx$/, ""); + module.exports.entry[module_name] = "./test/examples/" + file; } diff --git a/webpack.config.js b/webpack.config.js index fe47b527f..19ed650f3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,7 +2,7 @@ var webpack = require("webpack"); // Builds bundle usable - + + RGL Example 0 - Showcase @@ -14,11 +14,11 @@

    React-Grid-Layout Demo 0 - Showcase

    -

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    -

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    +

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    +

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    diff --git a/examples/1-basic.html b/examples/1-basic.html index 3d163ceec..37d5ae8be 100644 --- a/examples/1-basic.html +++ b/examples/1-basic.html @@ -5,8 +5,8 @@ - - + + RGL Example 1 - Basic @@ -14,13 +14,11 @@

    React-Grid-Layout Demo 1 - Basic

    -

    Try dragging the elements around.

    -

    This is a basic, non-responsive layout with dragging and resizing. Usage is very simple.

    +

    Try dragging the elements around.

    +

    This is a basic, non-responsive layout with dragging and resizing. Usage is very simple.

    diff --git a/examples/10-dynamic-min-max-wh.html b/examples/10-dynamic-min-max-wh.html index e08cf9811..65549afe9 100644 --- a/examples/10-dynamic-min-max-wh.html +++ b/examples/10-dynamic-min-max-wh.html @@ -5,8 +5,8 @@ - - + + RGL Example 10 - Dynamic Minimum and Maximum Width/Height @@ -14,13 +14,11 @@

    React-Grid-Layout Demo 10 - Dynamic Minimum and Maximum Width/Height

    -

    Your application may have more complex rules for determining an element's mins and maxes. This demo demonstrates how to use the `onResize` handler to accomplish this.

    -

    In this grid, all elements are allowed a max width of 2 if the height < 3, and a min width of 2 if the height >= 3.

    +

    Your application may have more complex rules for determining an element's mins and maxes. This demo demonstrates how to use the `onResize` handler to accomplish this.

    +

    In this grid, all elements are allowed a max width of 2 if the height < 3, and a min width of 2 if the height >= 3.

    diff --git a/examples/11-no-vertical-compact.html b/examples/11-no-vertical-compact.html index a37a15eab..7a1653b67 100644 --- a/examples/11-no-vertical-compact.html +++ b/examples/11-no-vertical-compact.html @@ -5,8 +5,8 @@ - - + + RGL Example 11 - No Vertical Compacting (Free Movement) @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 11 - No Vertical Compacting (Free Movement)

    -

    You may want to turn off vertical compacting so items can be placed anywhere in the grid. Set the property `verticalCompact` to `false` to achieve this effect.

    +

    You may want to turn off vertical compacting so items can be placed anywhere in the grid. Set the property `verticalCompact` to `false` to achieve this effect.

    diff --git a/examples/12-prevent-collision.html b/examples/12-prevent-collision.html index fdd83d79a..7167ef16a 100644 --- a/examples/12-prevent-collision.html +++ b/examples/12-prevent-collision.html @@ -5,8 +5,8 @@ - - + + RGL Example 12 - Prevent Collision @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 12 - Prevent Collision

    -

    You may want to turn off rearrangement so items don't move arround when dragging. Set the property `preventCollision` to `true` to achieve this effect. It's particularly useful with `verticalCompact` set to `false`.

    +

    You may want to turn off rearrangement so items don't move arround when dragging. Set the property `preventCollision` to `true` to achieve this effect. It's particularly useful with `verticalCompact` set to `false`.

    diff --git a/examples/13-error-case.html b/examples/13-error-case.html index a78795401..7a276c747 100644 --- a/examples/13-error-case.html +++ b/examples/13-error-case.html @@ -5,8 +5,8 @@ - - + + RGL Example 13 - Error Case @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 13 - Error Case

    -

    This is an extra test case for a collision bug fixed in November 2017. When you drag 1 over 2, it should not move over 3.

    +

    This is an extra test case for a collision bug fixed in November 2017. When you drag 1 over 2, it should not move over 3.

    diff --git a/examples/14-toolbox.html b/examples/14-toolbox.html index 918bd0213..a0b135135 100644 --- a/examples/14-toolbox.html +++ b/examples/14-toolbox.html @@ -5,8 +5,8 @@ - - + + RGL Example 14 - Toolbox @@ -14,11 +14,10 @@

    React-Grid-Layout Demo 14 - Toolbox

    -

    This demonstrates how to implement a toolbox to add and remove widgets.

    +

    This demonstrates how to implement a toolbox to add and remove widgets.

    diff --git a/examples/15-drag-from-outside.html b/examples/15-drag-from-outside.html index 99865ae55..95bc2d262 100644 --- a/examples/15-drag-from-outside.html +++ b/examples/15-drag-from-outside.html @@ -5,8 +5,8 @@ - - + + RGL Example 15 - Drag From Outside @@ -14,11 +14,10 @@

    React-Grid-Layout Demo 15 - Drag From Outside

    -

    This demo shows what happens when an item is added from outside of the grid.

    -

    Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with it accordingly.

    +

    This demo shows what happens when an item is added from outside of the grid.

    +

    Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with it accordingly.

    diff --git a/examples/2-no-dragging.html b/examples/2-no-dragging.html index 90acd5e54..b8a913757 100644 --- a/examples/2-no-dragging.html +++ b/examples/2-no-dragging.html @@ -5,8 +5,8 @@ - - + + RGL Example 2 - No Dragging @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 2 - No Dragging

    -

    This particular example has dragging and resizing turned off.

    +

    This particular example has dragging and resizing turned off.

    diff --git a/examples/3-messy.html b/examples/3-messy.html index 1a48371d5..349b7ad2f 100644 --- a/examples/3-messy.html +++ b/examples/3-messy.html @@ -5,8 +5,8 @@ - - + + RGL Example 3 - Messy @@ -14,14 +14,12 @@

    React-Grid-Layout Demo 3 - Messy

    -

    This demo shows what happens when elements are placed randomly all over the layout.

    -

    RGL does not auto-pack in the same fashion as other projects, such as jQuery Masonry. Packing is only done in the vertical dimension. If objects all have the same width, they will be packed efficiently.

    -

    If a layout is fed to RGL that has items with incorrect dimensions (width too big, overlapping other elements, out of bounds, etc), they will be automatically corrected on startup. See the source of this demo, where elements are placed randomly in the layout.

    +

    This demo shows what happens when elements are placed randomly all over the layout.

    +

    RGL does not auto-pack in the same fashion as other projects, such as jQuery Masonry. Packing is only done in the vertical dimension. If objects all have the same width, they will be packed efficiently.

    +

    If a layout is fed to RGL that has items with incorrect dimensions (width too big, overlapping other elements, out of bounds, etc), they will be automatically corrected on startup. See the source of this demo, where elements are placed randomly in the layout.

    diff --git a/examples/4-grid-property.html b/examples/4-grid-property.html index 39eb33d85..44e38e8ee 100644 --- a/examples/4-grid-property.html +++ b/examples/4-grid-property.html @@ -5,8 +5,8 @@ - - + + RGL Example 4 - Grid Item Properties @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 4 - Grid Item Properties

    -

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

    +

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

    diff --git a/examples/5-static-elements.html b/examples/5-static-elements.html index 442643fd8..3171038d4 100644 --- a/examples/5-static-elements.html +++ b/examples/5-static-elements.html @@ -5,8 +5,8 @@ - - + + RGL Example 5 - Static Elements @@ -14,12 +14,10 @@

    React-Grid-Layout Demo 5 - Static Elements

    -

    This demo sets an item to static. Static elements cannot be moved or resized. Other elements move themselves around a static element.

    +

    This demo sets an item to static. Static elements cannot be moved or resized. Other elements move themselves around a static element.

    diff --git a/examples/6-dynamic-add-remove.html b/examples/6-dynamic-add-remove.html index 35d9f76ec..1fb003f81 100644 --- a/examples/6-dynamic-add-remove.html +++ b/examples/6-dynamic-add-remove.html @@ -5,8 +5,8 @@ - - + + RGL Example 6 - Dynamic Add/Remove @@ -14,14 +14,12 @@

    React-Grid-Layout Demo 6 - Dynamic Add/Remove

    -

    This demo shows what happens when items are dynamically added and removed.

    -

    You can remove an item by clicking its "x", and add a new one with the button.

    -

    To further illustration RGL's capacities, this particular example is responsive. Trying resizing the window.

    +

    This demo shows what happens when items are dynamically added and removed.

    +

    You can remove an item by clicking its "x", and add a new one with the button.

    +

    To further illustration RGL's capacities, this particular example is responsive. Trying resizing the window.

    diff --git a/examples/7-localstorage.html b/examples/7-localstorage.html index 9d09a2b1d..d7888624d 100644 --- a/examples/7-localstorage.html +++ b/examples/7-localstorage.html @@ -5,8 +5,8 @@ - - + + RGL Example 7 - LocalStorage @@ -14,13 +14,11 @@

    React-Grid-Layout Demo 7 - LocalStorage

    -

    This simple demo synchronizes to localStorage.

    -

    Try moving and resizing elements, then reloading.

    +

    This simple demo synchronizes to localStorage.

    +

    Try moving and resizing elements, then reloading.

    diff --git a/examples/8-localstorage-responsive.html b/examples/8-localstorage-responsive.html index 590b7b9c0..7d97b34db 100644 --- a/examples/8-localstorage-responsive.html +++ b/examples/8-localstorage-responsive.html @@ -5,8 +5,8 @@ - - + + RGL Example 8 - Responsive with LocalStorage @@ -14,14 +14,12 @@

    React-Grid-Layout Demo 8 - Responsive with LocalStorage

    -

    This simple demo synchronizes to localStorage for each responsive breakpoint.

    -

    Try moving and resizing elements, changing window width, moving some more, and refreshing.

    -

    Each breakpoint has a separate layout. The onLayoutChange callback calls back with a hash of breakpoints to layouts, which is then synchronized to localStorage.

    +

    This simple demo synchronizes to localStorage for each responsive breakpoint.

    +

    Try moving and resizing elements, changing window width, moving some more, and refreshing.

    +

    Each breakpoint has a separate layout. The onLayoutChange callback calls back with a hash of breakpoints to layouts, which is then synchronized to localStorage.

    diff --git a/examples/9-min-max-wh.html b/examples/9-min-max-wh.html index c06b2dcad..92a469da8 100644 --- a/examples/9-min-max-wh.html +++ b/examples/9-min-max-wh.html @@ -5,8 +5,8 @@ - - + + RGL Example 9 - Minimum and Maximum Width/Height @@ -14,14 +14,12 @@

    React-Grid-Layout Demo 9 - Minimum and Maximum Width/Height

    -

    You can set min and max dimensions on a grid item by using the `minW`, `maxW`, `minH`, and `maxH` properties.

    -

    In this demo, the min and max dimensions are generated automatically. Try resizing the items below.

    -

    If your mins and maxes collide: for example min > max, or the initial dimensions are out of range, an error will be thrown.

    +

    You can set min and max dimensions on a grid item by using the `minW`, `maxW`, `minH`, and `maxH` properties.

    +

    In this demo, the min and max dimensions are generated automatically. Try resizing the items below.

    +

    If your mins and maxes collide: for example min > max, or the initial dimensions are out of range, an error will be thrown.

    diff --git a/examples/template.ejs b/examples/template.ejs index 89d220deb..c68c24fd9 100644 --- a/examples/template.ejs +++ b/examples/template.ejs @@ -5,8 +5,8 @@ - - + + RGL Example <%= index %> - <%= title %> @@ -14,16 +14,18 @@ - <% for(var i = 0; i < paragraphs.length; i++) { -%> + <%_ for(var i = 0; i < paragraphs.length; i++) { -%>

    <%- paragraphs[i] %>

    - <% } -%> + <%_ } -%>
    diff --git a/test/examples/0-showcase.jsx b/test/examples/0-showcase.jsx index 87428f99e..97529a729 100644 --- a/test/examples/0-showcase.jsx +++ b/test/examples/0-showcase.jsx @@ -123,6 +123,6 @@ function generateLayout() { }); } -if (require.main === module) { - require("../test-hook.jsx")(ShowcaseLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("../test-hook.jsx").then((fn) => fn.default(ShowcaseLayout)); } diff --git a/test/examples/1-basic.jsx b/test/examples/1-basic.jsx index b63983ce1..09d904c2a 100644 --- a/test/examples/1-basic.jsx +++ b/test/examples/1-basic.jsx @@ -61,6 +61,6 @@ export default class BasicLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(BasicLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(BasicLayout)); } diff --git a/test/examples/10-dynamic-min-max-wh.jsx b/test/examples/10-dynamic-min-max-wh.jsx index 85eef7fe6..d28a0528b 100644 --- a/test/examples/10-dynamic-min-max-wh.jsx +++ b/test/examples/10-dynamic-min-max-wh.jsx @@ -79,6 +79,6 @@ const ReactGridLayout = WidthProvider(RGL); } } -if (require.main === module) { - require("../test-hook.jsx")(DynamicMinMaxLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(DynamicMinMaxLayout)); } diff --git a/test/examples/11-no-vertical-compact.jsx b/test/examples/11-no-vertical-compact.jsx index 2f4d47141..62a834550 100644 --- a/test/examples/11-no-vertical-compact.jsx +++ b/test/examples/11-no-vertical-compact.jsx @@ -63,6 +63,6 @@ export default class NoCompactingLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(NoCompactingLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(NoCompactingLayout)); } diff --git a/test/examples/12-prevent-collision.jsx b/test/examples/12-prevent-collision.jsx index 564607412..969359c4a 100644 --- a/test/examples/12-prevent-collision.jsx +++ b/test/examples/12-prevent-collision.jsx @@ -65,6 +65,6 @@ export default class NoCollisionLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(NoCollisionLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(NoCollisionLayout)); } diff --git a/test/examples/13-error-case.jsx b/test/examples/13-error-case.jsx index a068f2774..f8f359ea9 100644 --- a/test/examples/13-error-case.jsx +++ b/test/examples/13-error-case.jsx @@ -76,6 +76,6 @@ export default class ErrorCaseLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(ErrorCaseLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(ErrorCaseLayout)); } diff --git a/test/examples/14-toolbox.jsx b/test/examples/14-toolbox.jsx index c05d75a56..7118dc926 100644 --- a/test/examples/14-toolbox.jsx +++ b/test/examples/14-toolbox.jsx @@ -205,6 +205,6 @@ function generateLayout() { }); } -if (require.main === module) { - require("../test-hook.jsx")(ToolboxLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(ToolboxLayout)); } diff --git a/test/examples/15-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx index 93385c765..cfc303388 100644 --- a/test/examples/15-drag-from-outside.jsx +++ b/test/examples/15-drag-from-outside.jsx @@ -136,6 +136,6 @@ function generateLayout() { }); } -if (require.main === module) { - require("../test-hook.jsx")(DragFromOutsideLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(DragFromOutsideLayout)); } diff --git a/test/examples/16-responsive-bootstrap-style.jsx b/test/examples/16-responsive-bootstrap-style.jsx index 746c335a7..0d75a8e32 100644 --- a/test/examples/16-responsive-bootstrap-style.jsx +++ b/test/examples/16-responsive-bootstrap-style.jsx @@ -39,6 +39,6 @@ export default class BootstrapStyleLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(BootstrapStyleLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(BootstrapStyleLayout)); } diff --git a/test/examples/2-no-dragging.jsx b/test/examples/2-no-dragging.jsx index e25316bab..3f47cc369 100644 --- a/test/examples/2-no-dragging.jsx +++ b/test/examples/2-no-dragging.jsx @@ -63,6 +63,6 @@ export default class NoDraggingLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(NoDraggingLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(NoDraggingLayout)); } diff --git a/test/examples/3-messy.jsx b/test/examples/3-messy.jsx index d5d476762..78f0cd8c5 100644 --- a/test/examples/3-messy.jsx +++ b/test/examples/3-messy.jsx @@ -62,6 +62,6 @@ export default class MessyLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(MessyLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(MessyLayout)); } diff --git a/test/examples/4-grid-property.jsx b/test/examples/4-grid-property.jsx index bc71dfeb4..bcad9a7a3 100644 --- a/test/examples/4-grid-property.jsx +++ b/test/examples/4-grid-property.jsx @@ -54,6 +54,6 @@ export default class GridPropertyLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(GridPropertyLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(GridPropertyLayout)); } diff --git a/test/examples/5-static-elements.jsx b/test/examples/5-static-elements.jsx index 55aa0773b..a4db4c48a 100644 --- a/test/examples/5-static-elements.jsx +++ b/test/examples/5-static-elements.jsx @@ -58,6 +58,6 @@ export default class StaticElementsLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(StaticElementsLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(StaticElementsLayout)); } diff --git a/test/examples/6-dynamic-add-remove.jsx b/test/examples/6-dynamic-add-remove.jsx index 337e30ad9..b068341d7 100644 --- a/test/examples/6-dynamic-add-remove.jsx +++ b/test/examples/6-dynamic-add-remove.jsx @@ -117,6 +117,6 @@ export default class AddRemoveLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(AddRemoveLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(AddRemoveLayout)); } diff --git a/test/examples/7-localstorage.jsx b/test/examples/7-localstorage.jsx index 00747a2f1..b0c435990 100644 --- a/test/examples/7-localstorage.jsx +++ b/test/examples/7-localstorage.jsx @@ -91,6 +91,6 @@ function saveToLS(key, value) { } } -if (require.main === module) { - require("../test-hook.jsx")(LocalStorageLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(LocalStorageLayout)); } diff --git a/test/examples/8-localstorage-responsive.jsx b/test/examples/8-localstorage-responsive.jsx index bc0be6751..5b66c9db0 100644 --- a/test/examples/8-localstorage-responsive.jsx +++ b/test/examples/8-localstorage-responsive.jsx @@ -90,6 +90,6 @@ function saveToLS(key, value) { } } -if (require.main === module) { - require("../test-hook.jsx")(ResponsiveLocalStorageLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(ResponsiveLocalStorageLayout)); } diff --git a/test/examples/9-min-max-wh.jsx b/test/examples/9-min-max-wh.jsx index c4e3f4cb1..69ada060d 100644 --- a/test/examples/9-min-max-wh.jsx +++ b/test/examples/9-min-max-wh.jsx @@ -65,6 +65,6 @@ export default class MinMaxLayout extends React.PureComponent { } } -if (require.main === module) { - require("../test-hook.jsx")(MinMaxLayout); +if (process.env.STATIC_EXAMPLES === true) { + import("test/test-hook.jsx").then((fn) => fn.default(MinMaxLayout)); } diff --git a/test/test-hook.jsx b/test/test-hook.jsx index f2171bfa7..d8dacfae8 100644 --- a/test/test-hook.jsx +++ b/test/test-hook.jsx @@ -35,11 +35,16 @@ export default function makeLayout(Layout) { } } - document.addEventListener("DOMContentLoaded", function() { + function run() { const contentDiv = document.getElementById("content"); const gridProps = window.gridProps || {}; ReactDOM.render(React.createElement(ExampleLayout, gridProps), contentDiv); - }); + } + if (!document.getElementById("content")) { + document.addEventListener("DOMContentLoaded", run); + } else { + run(); + } return ExampleLayout; } diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index f1a9e9188..ccb435f10 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -37,7 +37,9 @@ module.exports = { devServer: { publicPath: "/", compress: true, - port: 4002 + port: 4002, + open: true, + contentBase: '.', }, resolve: { extensions: [".webpack.js", ".web.js", ".js", ".jsx"], diff --git a/webpack-examples.config.js b/webpack-examples.config.js index 038afdf6a..828c768e4 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -21,9 +21,9 @@ module.exports = { } }, output: { - path: __dirname + "/dist", - filename: "[name].js", - sourceMapFilename: "[file].map", + path: __dirname + "/dist", + filename: "[name].js", + sourceMapFilename: "[file].map", }, module: { rules: [ @@ -35,12 +35,21 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ "process.env": { - NODE_ENV: JSON.stringify("production") - } + NODE_ENV: JSON.stringify("production"), + // sigil to load self into #content + STATIC_EXAMPLES: JSON.stringify(true), + }, }) ], + devServer: { + port: 4002, + open: true, + openPage: 'examples/0-showcase.html', + contentBase: '.', + publicPath: '/examples/' + }, resolve: { - extensions: [".webpack.js", ".web.js", ".js", ".jsx"], + extensions: [".js", ".jsx"], alias: { "react-grid-layout": __dirname + "/index-dev.js" } } }; From e61a493965369296176be6ced56329c62a845ce5 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 9 Oct 2019 12:34:35 -0400 Subject: [PATCH 029/101] chore(pkg): minor flow update --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9eb68cfa2..46747b9c5 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "eslint-plugin-mocha": "^6.1.1", "eslint-plugin-react": "^7.14.3", "exports-loader": "^0.7.0", - "flow-bin": "^0.107.0", + "flow-bin": "^0.109.0", "husky": "^3.0.8", "imports-loader": "^0.8.0", "jest-cli": "^24.9.0", diff --git a/yarn.lock b/yarn.lock index a9bac000d..8b2bcb02f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3205,10 +3205,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flow-bin@^0.107.0: - version "0.107.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.107.0.tgz#b37bfcce51204d35d58f8eb93b3a76b52291e4cc" - integrity sha512-hsmwO5Q0+XUXaO2kIKLpleUNNBSFcsGEQGBOTEC/KR/4Ez695I1fweX/ioSjbU4RWhPZhkIqnpbF9opVAauCHg== +flow-bin@^0.109.0: + version "0.109.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.109.0.tgz#dcdcb7402dd85b58200392d8716ccf14e5a8c24c" + integrity sha512-tpcMTpAGIRivYhFV3KJq+zHI2HzcXo8MoGe9pXS4G/UZuey2Faq/e8/gdph2WF0erRlML5hmwfwiq7v9c25c7w== flush-write-stream@^1.0.0: version "1.1.1" From 86cffcac703eee9315cf22954a93d7fbe4f0a01f Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 9 Oct 2019 12:43:23 -0400 Subject: [PATCH 030/101] fix(test): ensure espower & present and let webpack handle modules babel-loader will automatically set modules:false when instantiated, so we shouldn't set it on .babelrc.js, because it will break jest et al. --- .babelrc.js | 1 - package.json | 1 + yarn.lock | 56 +++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/.babelrc.js b/.babelrc.js index a0196cef1..3e76b8cdd 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -6,7 +6,6 @@ module.exports = { "@babel/preset-env", { targets: "> 0.25%, not dead", - modules: false, } ], "@babel/react", diff --git a/package.json b/package.json index 46747b9c5..1e5f54671 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.0.6", + "babel-plugin-espower": "^3.0.1", "css-loader": "^3.2.0", "ejs": "^2.7.1", "eslint": "^6.4.0", diff --git a/yarn.lock b/yarn.lock index 8b2bcb02f..ae55b0943 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,7 +29,7 @@ semver "^5.4.1" source-map "^0.6.1" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.3": +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.3.tgz#71d5375264f93ec7bac7d9f35a67067733f5578e" integrity sha512-hLhYbAb3pHwxjlijC4AQ7mqZdcoujiNaW7izCT04CIowHK8psN0IN8QjDv0iyFtycF5FowUOTwDloIheI25aMw== @@ -1516,6 +1516,19 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" +babel-plugin-espower@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e" + integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A== + dependencies: + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + call-matcher "^1.0.0" + core-js "^2.0.0" + espower-location-detector "^1.0.0" + espurify "^1.6.0" + estraverse "^4.1.1" + babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -1822,6 +1835,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-matcher@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" + integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw== + dependencies: + core-js "^2.0.0" + deep-equal "^1.0.0" + espurify "^1.6.0" + estraverse "^4.0.0" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2163,6 +2186,11 @@ core-js-compat@^3.1.1: browserslist "^4.6.6" semver "^6.3.0" +core-js@^2.0.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2348,7 +2376,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-equal@^1.0.1: +deep-equal@^1.0.0, deep-equal@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== @@ -2806,6 +2834,16 @@ eslint@^6.4.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espower-location-detector@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" + integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU= + dependencies: + is-url "^1.2.1" + path-is-absolute "^1.0.0" + source-map "^0.5.0" + xtend "^4.0.0" + espree@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" @@ -2825,6 +2863,13 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +espurify@^1.6.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" + integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== + dependencies: + core-js "^2.0.0" + esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" @@ -4154,6 +4199,11 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-url@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -6966,7 +7016,7 @@ source-map@0.5.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.0.tgz#0fe96503ac86a5adb5de63f4e412ae4872cdbe86" integrity sha1-D+llA6yGpa213mP05BKuSHLNvoY= -source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= From 80a3a5dbe8a948dad5480fa7ca20a03b255a3ed1 Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Wed, 9 Oct 2019 19:48:40 +0300 Subject: [PATCH 031/101] chore(actions): increase operations count and runs frequency (#1037) --- .github/workflows/stale.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 5299432b5..8b7e3291c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,7 +1,7 @@ name: "Close stale issues and PRs" on: schedule: - - cron: "0 0 * * *" + - cron: "0 0,6,12,18 * * *" jobs: stale: @@ -16,3 +16,4 @@ jobs: exempt-pr-label: 'stale' days-before-stale: 30 days-before-close: 7 + operations-per-run: 50 From 5aea831e0aa2439dc054e340b25bd138f629bb41 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 9 Oct 2019 12:54:25 -0400 Subject: [PATCH 032/101] fix(test): add @babel/cli --- package.json | 1 + yarn.lock | 40 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1e5f54671..b016d6f4d 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "react-resizable": "^1.0.0" }, "devDependencies": { + "@babel/cli": "^7.6.3", "@babel/core": "^7.6.0", "@babel/plugin-proposal-class-properties": "^7.5.5", "@babel/plugin-transform-flow-comments": "^7.6.0", diff --git a/yarn.lock b/yarn.lock index ae55b0943..e90ad20e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,23 @@ # yarn lockfile v1 +"@babel/cli@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.3.tgz#1b0c62098c8a5e01e4a4a59a52cba9682e7e0906" + integrity sha512-kWKOEeuylpa781yCeA5//eEx1u3WtLZqbi2VWXLKmb3QDPb5T2f7Yk311MK7bvvjR70dluAeiu4VXXsG1WwJsw== + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.13" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.6.1" + optionalDependencies: + chokidar "^2.1.8" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" @@ -2060,7 +2077,7 @@ commander@2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@^2.20.0: +commander@^2.20.0, commander@^2.8.1: version "2.20.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== @@ -3321,6 +3338,11 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -3429,7 +3451,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -4153,6 +4175,11 @@ is-path-inside@^3.0.1: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5699,6 +5726,15 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== + dependencies: + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" + mkdirp "^0.5.1" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" From f2f3fc0e10834f555dc0d81bf7ed5e630bb4f61a Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Thu, 10 Oct 2019 10:29:03 +0300 Subject: [PATCH 033/101] Update stale.yml --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 8b7e3291c..f6fc34cdc 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -16,4 +16,4 @@ jobs: exempt-pr-label: 'stale' days-before-stale: 30 days-before-close: 7 - operations-per-run: 50 + operations-per-run: 30 From b733aede6349434ca965f7dee2ce357b86e2c77e Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 10 Oct 2019 09:00:20 -0400 Subject: [PATCH 034/101] fix(example): test-hook relative path --- test/examples/1-basic.jsx | 2 +- test/examples/10-dynamic-min-max-wh.jsx | 2 +- test/examples/11-no-vertical-compact.jsx | 2 +- test/examples/12-prevent-collision.jsx | 2 +- test/examples/13-error-case.jsx | 2 +- test/examples/14-toolbox.jsx | 2 +- test/examples/15-drag-from-outside.jsx | 2 +- test/examples/16-responsive-bootstrap-style.jsx | 2 +- test/examples/2-no-dragging.jsx | 2 +- test/examples/3-messy.jsx | 2 +- test/examples/4-grid-property.jsx | 2 +- test/examples/5-static-elements.jsx | 2 +- test/examples/6-dynamic-add-remove.jsx | 2 +- test/examples/7-localstorage.jsx | 2 +- test/examples/8-localstorage-responsive.jsx | 2 +- test/examples/9-min-max-wh.jsx | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/test/examples/1-basic.jsx b/test/examples/1-basic.jsx index 09d904c2a..1dcc751d4 100644 --- a/test/examples/1-basic.jsx +++ b/test/examples/1-basic.jsx @@ -62,5 +62,5 @@ export default class BasicLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(BasicLayout)); + import("../test-hook.jsx").then((fn) => fn.default(BasicLayout)); } diff --git a/test/examples/10-dynamic-min-max-wh.jsx b/test/examples/10-dynamic-min-max-wh.jsx index d28a0528b..13e6ed754 100644 --- a/test/examples/10-dynamic-min-max-wh.jsx +++ b/test/examples/10-dynamic-min-max-wh.jsx @@ -80,5 +80,5 @@ const ReactGridLayout = WidthProvider(RGL); } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(DynamicMinMaxLayout)); + import("../test-hook.jsx").then((fn) => fn.default(DynamicMinMaxLayout)); } diff --git a/test/examples/11-no-vertical-compact.jsx b/test/examples/11-no-vertical-compact.jsx index 62a834550..fa645adb5 100644 --- a/test/examples/11-no-vertical-compact.jsx +++ b/test/examples/11-no-vertical-compact.jsx @@ -64,5 +64,5 @@ export default class NoCompactingLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(NoCompactingLayout)); + import("../test-hook.jsx").then((fn) => fn.default(NoCompactingLayout)); } diff --git a/test/examples/12-prevent-collision.jsx b/test/examples/12-prevent-collision.jsx index 969359c4a..665efb790 100644 --- a/test/examples/12-prevent-collision.jsx +++ b/test/examples/12-prevent-collision.jsx @@ -66,5 +66,5 @@ export default class NoCollisionLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(NoCollisionLayout)); + import("../test-hook.jsx").then((fn) => fn.default(NoCollisionLayout)); } diff --git a/test/examples/13-error-case.jsx b/test/examples/13-error-case.jsx index f8f359ea9..3147409c9 100644 --- a/test/examples/13-error-case.jsx +++ b/test/examples/13-error-case.jsx @@ -77,5 +77,5 @@ export default class ErrorCaseLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(ErrorCaseLayout)); + import("../test-hook.jsx").then((fn) => fn.default(ErrorCaseLayout)); } diff --git a/test/examples/14-toolbox.jsx b/test/examples/14-toolbox.jsx index 7118dc926..bee3dd355 100644 --- a/test/examples/14-toolbox.jsx +++ b/test/examples/14-toolbox.jsx @@ -206,5 +206,5 @@ function generateLayout() { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(ToolboxLayout)); + import("../test-hook.jsx").then((fn) => fn.default(ToolboxLayout)); } diff --git a/test/examples/15-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx index cfc303388..3d3014ecc 100644 --- a/test/examples/15-drag-from-outside.jsx +++ b/test/examples/15-drag-from-outside.jsx @@ -137,5 +137,5 @@ function generateLayout() { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(DragFromOutsideLayout)); + import("../test-hook.jsx").then((fn) => fn.default(DragFromOutsideLayout)); } diff --git a/test/examples/16-responsive-bootstrap-style.jsx b/test/examples/16-responsive-bootstrap-style.jsx index 0d75a8e32..95699a4ae 100644 --- a/test/examples/16-responsive-bootstrap-style.jsx +++ b/test/examples/16-responsive-bootstrap-style.jsx @@ -40,5 +40,5 @@ export default class BootstrapStyleLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(BootstrapStyleLayout)); + import("../test-hook.jsx").then((fn) => fn.default(BootstrapStyleLayout)); } diff --git a/test/examples/2-no-dragging.jsx b/test/examples/2-no-dragging.jsx index 3f47cc369..20b2b44c2 100644 --- a/test/examples/2-no-dragging.jsx +++ b/test/examples/2-no-dragging.jsx @@ -64,5 +64,5 @@ export default class NoDraggingLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(NoDraggingLayout)); + import("../test-hook.jsx").then((fn) => fn.default(NoDraggingLayout)); } diff --git a/test/examples/3-messy.jsx b/test/examples/3-messy.jsx index 78f0cd8c5..fbefb9818 100644 --- a/test/examples/3-messy.jsx +++ b/test/examples/3-messy.jsx @@ -63,5 +63,5 @@ export default class MessyLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(MessyLayout)); + import("../test-hook.jsx").then((fn) => fn.default(MessyLayout)); } diff --git a/test/examples/4-grid-property.jsx b/test/examples/4-grid-property.jsx index bcad9a7a3..d538081eb 100644 --- a/test/examples/4-grid-property.jsx +++ b/test/examples/4-grid-property.jsx @@ -55,5 +55,5 @@ export default class GridPropertyLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(GridPropertyLayout)); + import("../test-hook.jsx").then((fn) => fn.default(GridPropertyLayout)); } diff --git a/test/examples/5-static-elements.jsx b/test/examples/5-static-elements.jsx index a4db4c48a..b568109eb 100644 --- a/test/examples/5-static-elements.jsx +++ b/test/examples/5-static-elements.jsx @@ -59,5 +59,5 @@ export default class StaticElementsLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(StaticElementsLayout)); + import("../test-hook.jsx").then((fn) => fn.default(StaticElementsLayout)); } diff --git a/test/examples/6-dynamic-add-remove.jsx b/test/examples/6-dynamic-add-remove.jsx index b068341d7..87b3be8e7 100644 --- a/test/examples/6-dynamic-add-remove.jsx +++ b/test/examples/6-dynamic-add-remove.jsx @@ -118,5 +118,5 @@ export default class AddRemoveLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(AddRemoveLayout)); + import("../test-hook.jsx").then((fn) => fn.default(AddRemoveLayout)); } diff --git a/test/examples/7-localstorage.jsx b/test/examples/7-localstorage.jsx index b0c435990..482cdec46 100644 --- a/test/examples/7-localstorage.jsx +++ b/test/examples/7-localstorage.jsx @@ -92,5 +92,5 @@ function saveToLS(key, value) { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(LocalStorageLayout)); + import("../test-hook.jsx").then((fn) => fn.default(LocalStorageLayout)); } diff --git a/test/examples/8-localstorage-responsive.jsx b/test/examples/8-localstorage-responsive.jsx index 5b66c9db0..01fb710f5 100644 --- a/test/examples/8-localstorage-responsive.jsx +++ b/test/examples/8-localstorage-responsive.jsx @@ -91,5 +91,5 @@ function saveToLS(key, value) { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(ResponsiveLocalStorageLayout)); + import("../test-hook.jsx").then((fn) => fn.default(ResponsiveLocalStorageLayout)); } diff --git a/test/examples/9-min-max-wh.jsx b/test/examples/9-min-max-wh.jsx index 69ada060d..3b0d5efd2 100644 --- a/test/examples/9-min-max-wh.jsx +++ b/test/examples/9-min-max-wh.jsx @@ -66,5 +66,5 @@ export default class MinMaxLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("test/test-hook.jsx").then((fn) => fn.default(MinMaxLayout)); + import("../test-hook.jsx").then((fn) => fn.default(MinMaxLayout)); } From 7fefadcccb8cfd19f8dbeaaf2c0af4c49cc5f809 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 10 Oct 2019 09:08:11 -0400 Subject: [PATCH 035/101] fix(flow): upgrade flow version in flowconfig --- .flowconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.flowconfig b/.flowconfig index 3f39cda91..a1cd99e62 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,5 @@ [version] -0.107.0 +0.109.0 [ignore] From a0936f7ba5b6d88c324b4fa531ec6a54de06946e Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 10 Oct 2019 09:14:52 -0400 Subject: [PATCH 036/101] chore(style): re-run prettier --- test/examples/0-showcase.jsx | 2 +- test/examples/1-basic.jsx | 2 +- test/examples/10-dynamic-min-max-wh.jsx | 4 +- test/examples/11-no-vertical-compact.jsx | 2 +- test/examples/12-prevent-collision.jsx | 2 +- test/examples/13-error-case.jsx | 2 +- test/examples/14-toolbox.jsx | 2 +- test/examples/15-drag-from-outside.jsx | 2 +- .../16-responsive-bootstrap-style.jsx | 2 +- test/examples/2-no-dragging.jsx | 2 +- test/examples/3-messy.jsx | 2 +- test/examples/4-grid-property.jsx | 2 +- test/examples/5-static-elements.jsx | 2 +- test/examples/6-dynamic-add-remove.jsx | 2 +- test/examples/7-localstorage.jsx | 4 +- test/examples/8-localstorage-responsive.jsx | 4 +- test/examples/9-min-max-wh.jsx | 2 +- webpack-dev-server.config.js | 6 +-- webpack-examples.config.js | 43 +++++++++++-------- webpack.config.js | 14 +++--- 20 files changed, 55 insertions(+), 48 deletions(-) diff --git a/test/examples/0-showcase.jsx b/test/examples/0-showcase.jsx index 97529a729..62bf0982f 100644 --- a/test/examples/0-showcase.jsx +++ b/test/examples/0-showcase.jsx @@ -124,5 +124,5 @@ function generateLayout() { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(ShowcaseLayout)); + import("../test-hook.jsx").then(fn => fn.default(ShowcaseLayout)); } diff --git a/test/examples/1-basic.jsx b/test/examples/1-basic.jsx index 1dcc751d4..32905be6e 100644 --- a/test/examples/1-basic.jsx +++ b/test/examples/1-basic.jsx @@ -62,5 +62,5 @@ export default class BasicLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(BasicLayout)); + import("../test-hook.jsx").then(fn => fn.default(BasicLayout)); } diff --git a/test/examples/10-dynamic-min-max-wh.jsx b/test/examples/10-dynamic-min-max-wh.jsx index 13e6ed754..04cc78cf4 100644 --- a/test/examples/10-dynamic-min-max-wh.jsx +++ b/test/examples/10-dynamic-min-max-wh.jsx @@ -10,7 +10,7 @@ const ReactGridLayout = WidthProvider(RGL); * In this grid, all elements are allowed a max width of 2 if the height < 3, * and a min width of 2 if the height >= 3. */ - export default class DynamicMinMaxLayout extends React.PureComponent { +export default class DynamicMinMaxLayout extends React.PureComponent { static defaultProps = { isDraggable: true, isResizable: true, @@ -80,5 +80,5 @@ const ReactGridLayout = WidthProvider(RGL); } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(DynamicMinMaxLayout)); + import("../test-hook.jsx").then(fn => fn.default(DynamicMinMaxLayout)); } diff --git a/test/examples/11-no-vertical-compact.jsx b/test/examples/11-no-vertical-compact.jsx index fa645adb5..9da272499 100644 --- a/test/examples/11-no-vertical-compact.jsx +++ b/test/examples/11-no-vertical-compact.jsx @@ -64,5 +64,5 @@ export default class NoCompactingLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(NoCompactingLayout)); + import("../test-hook.jsx").then(fn => fn.default(NoCompactingLayout)); } diff --git a/test/examples/12-prevent-collision.jsx b/test/examples/12-prevent-collision.jsx index 665efb790..e8b2e6a58 100644 --- a/test/examples/12-prevent-collision.jsx +++ b/test/examples/12-prevent-collision.jsx @@ -66,5 +66,5 @@ export default class NoCollisionLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(NoCollisionLayout)); + import("../test-hook.jsx").then(fn => fn.default(NoCollisionLayout)); } diff --git a/test/examples/13-error-case.jsx b/test/examples/13-error-case.jsx index 3147409c9..ea1856280 100644 --- a/test/examples/13-error-case.jsx +++ b/test/examples/13-error-case.jsx @@ -77,5 +77,5 @@ export default class ErrorCaseLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(ErrorCaseLayout)); + import("../test-hook.jsx").then(fn => fn.default(ErrorCaseLayout)); } diff --git a/test/examples/14-toolbox.jsx b/test/examples/14-toolbox.jsx index bee3dd355..8328f0f92 100644 --- a/test/examples/14-toolbox.jsx +++ b/test/examples/14-toolbox.jsx @@ -206,5 +206,5 @@ function generateLayout() { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(ToolboxLayout)); + import("../test-hook.jsx").then(fn => fn.default(ToolboxLayout)); } diff --git a/test/examples/15-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx index 3d3014ecc..b249be1f5 100644 --- a/test/examples/15-drag-from-outside.jsx +++ b/test/examples/15-drag-from-outside.jsx @@ -137,5 +137,5 @@ function generateLayout() { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(DragFromOutsideLayout)); + import("../test-hook.jsx").then(fn => fn.default(DragFromOutsideLayout)); } diff --git a/test/examples/16-responsive-bootstrap-style.jsx b/test/examples/16-responsive-bootstrap-style.jsx index 95699a4ae..2cb69c3a4 100644 --- a/test/examples/16-responsive-bootstrap-style.jsx +++ b/test/examples/16-responsive-bootstrap-style.jsx @@ -40,5 +40,5 @@ export default class BootstrapStyleLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(BootstrapStyleLayout)); + import("../test-hook.jsx").then(fn => fn.default(BootstrapStyleLayout)); } diff --git a/test/examples/2-no-dragging.jsx b/test/examples/2-no-dragging.jsx index 20b2b44c2..bc4718500 100644 --- a/test/examples/2-no-dragging.jsx +++ b/test/examples/2-no-dragging.jsx @@ -64,5 +64,5 @@ export default class NoDraggingLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(NoDraggingLayout)); + import("../test-hook.jsx").then(fn => fn.default(NoDraggingLayout)); } diff --git a/test/examples/3-messy.jsx b/test/examples/3-messy.jsx index fbefb9818..c1ff248a5 100644 --- a/test/examples/3-messy.jsx +++ b/test/examples/3-messy.jsx @@ -63,5 +63,5 @@ export default class MessyLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(MessyLayout)); + import("../test-hook.jsx").then(fn => fn.default(MessyLayout)); } diff --git a/test/examples/4-grid-property.jsx b/test/examples/4-grid-property.jsx index d538081eb..cafa1c600 100644 --- a/test/examples/4-grid-property.jsx +++ b/test/examples/4-grid-property.jsx @@ -55,5 +55,5 @@ export default class GridPropertyLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(GridPropertyLayout)); + import("../test-hook.jsx").then(fn => fn.default(GridPropertyLayout)); } diff --git a/test/examples/5-static-elements.jsx b/test/examples/5-static-elements.jsx index b568109eb..433791087 100644 --- a/test/examples/5-static-elements.jsx +++ b/test/examples/5-static-elements.jsx @@ -59,5 +59,5 @@ export default class StaticElementsLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(StaticElementsLayout)); + import("../test-hook.jsx").then(fn => fn.default(StaticElementsLayout)); } diff --git a/test/examples/6-dynamic-add-remove.jsx b/test/examples/6-dynamic-add-remove.jsx index 87b3be8e7..4d20b864f 100644 --- a/test/examples/6-dynamic-add-remove.jsx +++ b/test/examples/6-dynamic-add-remove.jsx @@ -118,5 +118,5 @@ export default class AddRemoveLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(AddRemoveLayout)); + import("../test-hook.jsx").then(fn => fn.default(AddRemoveLayout)); } diff --git a/test/examples/7-localstorage.jsx b/test/examples/7-localstorage.jsx index 482cdec46..73c4f43e0 100644 --- a/test/examples/7-localstorage.jsx +++ b/test/examples/7-localstorage.jsx @@ -6,7 +6,7 @@ const originalLayout = getFromLS("layout") || []; /** * This layout demonstrates how to sync to localstorage. */ - export default class LocalStorageLayout extends React.PureComponent { +export default class LocalStorageLayout extends React.PureComponent { static defaultProps = { className: "layout", cols: 12, @@ -92,5 +92,5 @@ function saveToLS(key, value) { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(LocalStorageLayout)); + import("../test-hook.jsx").then(fn => fn.default(LocalStorageLayout)); } diff --git a/test/examples/8-localstorage-responsive.jsx b/test/examples/8-localstorage-responsive.jsx index 01fb710f5..78269d11c 100644 --- a/test/examples/8-localstorage-responsive.jsx +++ b/test/examples/8-localstorage-responsive.jsx @@ -91,5 +91,7 @@ function saveToLS(key, value) { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(ResponsiveLocalStorageLayout)); + import("../test-hook.jsx").then(fn => + fn.default(ResponsiveLocalStorageLayout) + ); } diff --git a/test/examples/9-min-max-wh.jsx b/test/examples/9-min-max-wh.jsx index 3b0d5efd2..b403ccf62 100644 --- a/test/examples/9-min-max-wh.jsx +++ b/test/examples/9-min-max-wh.jsx @@ -66,5 +66,5 @@ export default class MinMaxLayout extends React.PureComponent { } if (process.env.STATIC_EXAMPLES === true) { - import("../test-hook.jsx").then((fn) => fn.default(MinMaxLayout)); + import("../test-hook.jsx").then(fn => fn.default(MinMaxLayout)); } diff --git a/webpack-dev-server.config.js b/webpack-dev-server.config.js index ccb435f10..54d94c037 100644 --- a/webpack-dev-server.config.js +++ b/webpack-dev-server.config.js @@ -19,9 +19,7 @@ module.exports = { loader: "babel-loader", query: { cacheDirectory: true, - plugins: [ - ['react-hot-loader/babel'] - ] + plugins: [["react-hot-loader/babel"]] } } ] @@ -39,7 +37,7 @@ module.exports = { compress: true, port: 4002, open: true, - contentBase: '.', + contentBase: "." }, resolve: { extensions: [".webpack.js", ".web.js", ".js", ".jsx"], diff --git a/webpack-examples.config.js b/webpack-examples.config.js index 828c768e4..a49569198 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -1,6 +1,6 @@ -'use strict'; -const webpack = require('webpack'); -const fs = require('fs'); +"use strict"; +const webpack = require("webpack"); +const fs = require("fs"); // Builds example bundles module.exports = { @@ -23,13 +23,18 @@ module.exports = { output: { path: __dirname + "/dist", filename: "[name].js", - sourceMapFilename: "[file].map", + sourceMapFilename: "[file].map" }, module: { rules: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query: { - cacheDirectory: true, - }} + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: "babel-loader", + query: { + cacheDirectory: true + } + } ] }, plugins: [ @@ -37,16 +42,16 @@ module.exports = { "process.env": { NODE_ENV: JSON.stringify("production"), // sigil to load self into #content - STATIC_EXAMPLES: JSON.stringify(true), - }, + STATIC_EXAMPLES: JSON.stringify(true) + } }) ], devServer: { port: 4002, open: true, - openPage: 'examples/0-showcase.html', - contentBase: '.', - publicPath: '/examples/' + openPage: "examples/0-showcase.html", + contentBase: ".", + publicPath: "/examples/" }, resolve: { extensions: [".js", ".jsx"], @@ -55,11 +60,13 @@ module.exports = { }; // Load all entry points -const files = fs.readdirSync(__dirname + '/test/examples').filter(function(element, index, array){ - return element.match(/^.+\.jsx$/); -}); +const files = fs + .readdirSync(__dirname + "/test/examples") + .filter(function(element, index, array) { + return element.match(/^.+\.jsx$/); + }); -for (const file of files){ - const module_name = file.replace(/\.jsx$/,''); - module.exports.entry[module_name] = './test/examples/' + file; +for (const file of files) { + const module_name = file.replace(/\.jsx$/, ""); + module.exports.entry[module_name] = "./test/examples/" + file; } diff --git a/webpack.config.js b/webpack.config.js index 5207da233..2633719b2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -26,20 +26,20 @@ module.exports = { root: "React" }, "react-dom": { - "commonjs": "react-dom", - "commonjs2": "react-dom", - "amd": "react-dom", - "root": "ReactDOM" + commonjs: "react-dom", + commonjs2: "react-dom", + amd: "react-dom", + root: "ReactDOM" } }, module: { rules: [ { - test: /\.jsx?$/, - exclude: /node_modules/, + test: /\.jsx?$/, + exclude: /node_modules/, loader: "babel-loader", query: { - cacheDirectory: true, + cacheDirectory: true } } ] From 6575862f4475a1a205dbad96e96a44d458a38436 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 10 Oct 2019 09:18:16 -0400 Subject: [PATCH 037/101] chore(examples): add CONTENT_BASE env and ignore examples examples/ will be re-added in gh-pages --- .gitignore | 5 +++++ Makefile | 7 +++++-- examples/0-showcase.html | 24 ------------------------ examples/1-basic.html | 24 ------------------------ examples/10-dynamic-min-max-wh.html | 24 ------------------------ examples/11-no-vertical-compact.html | 23 ----------------------- examples/12-prevent-collision.html | 23 ----------------------- examples/13-error-case.html | 23 ----------------------- examples/14-toolbox.html | 23 ----------------------- examples/15-drag-from-outside.html | 23 ----------------------- examples/2-no-dragging.html | 23 ----------------------- examples/3-messy.html | 25 ------------------------- examples/4-grid-property.html | 23 ----------------------- examples/5-static-elements.html | 23 ----------------------- examples/6-dynamic-add-remove.html | 25 ------------------------- examples/7-localstorage.html | 24 ------------------------ examples/8-localstorage-responsive.html | 25 ------------------------- examples/9-min-max-wh.html | 25 ------------------------- examples/generate.js | 19 +++++++++++-------- examples/template.ejs | 4 ++-- webpack-examples.config.js | 2 +- 21 files changed, 24 insertions(+), 393 deletions(-) delete mode 100644 examples/0-showcase.html delete mode 100644 examples/1-basic.html delete mode 100644 examples/10-dynamic-min-max-wh.html delete mode 100644 examples/11-no-vertical-compact.html delete mode 100644 examples/12-prevent-collision.html delete mode 100644 examples/13-error-case.html delete mode 100644 examples/14-toolbox.html delete mode 100644 examples/15-drag-from-outside.html delete mode 100644 examples/2-no-dragging.html delete mode 100644 examples/3-messy.html delete mode 100644 examples/4-grid-property.html delete mode 100644 examples/5-static-elements.html delete mode 100644 examples/6-dynamic-add-remove.html delete mode 100644 examples/7-localstorage.html delete mode 100644 examples/8-localstorage-responsive.html delete mode 100644 examples/9-min-max-wh.html diff --git a/.gitignore b/.gitignore index a22a09030..6744c7898 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,8 @@ dist/* npm-debug.log build/ .idea +# Ignore built example files +examples/*.html +examples/*.js +!examples/generate.js +!examples/vars.js diff --git a/Makefile b/Makefile index 1ec7663de..c7742a032 100644 --- a/Makefile +++ b/Makefile @@ -32,12 +32,15 @@ dist/%.min.js: $(LIB) $(BIN) build-js: @$(BIN)/babel --out-dir $(BUILD) $(LIB) +# Will build for use on github pages. Full url of page is +# https://strml.github.io/react-grid-layout/examples/0-showcase.html +# so the CONTENT_BASE should adapt. build-example: @$(BIN)/webpack --config webpack-examples.config.js - node ./examples/generate.js + env CONTENT_BASE="/react-grid-layout/examples/" node ./examples/generate.js view-example: - node ./examples/generate.js + env CONTENT_BASE="/examples/" node ./examples/generate.js @$(BIN)/webpack-dev-server --config webpack-examples.config.js --progress --colors # FIXME flow is usually global diff --git a/examples/0-showcase.html b/examples/0-showcase.html deleted file mode 100644 index 6011e476a..000000000 --- a/examples/0-showcase.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - RGL Example 0 - Showcase - - -

    React-Grid-Layout Demo 0 - Showcase

    - -

    React-Grid-Layout is a grid layout system for React. It features auto-packing, draggable and resizable widgets, static widgets, a fluid layout, and separate layouts per responsive breakpoint.

    -

    Try it out! Drag some boxes around, resize them, and resize the window to see the responsive breakpoints.

    -
    - - diff --git a/examples/1-basic.html b/examples/1-basic.html deleted file mode 100644 index 37d5ae8be..000000000 --- a/examples/1-basic.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - RGL Example 1 - Basic - - -

    React-Grid-Layout Demo 1 - Basic

    - -

    Try dragging the elements around.

    -

    This is a basic, non-responsive layout with dragging and resizing. Usage is very simple.

    -
    - - diff --git a/examples/10-dynamic-min-max-wh.html b/examples/10-dynamic-min-max-wh.html deleted file mode 100644 index 65549afe9..000000000 --- a/examples/10-dynamic-min-max-wh.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - RGL Example 10 - Dynamic Minimum and Maximum Width/Height - - -

    React-Grid-Layout Demo 10 - Dynamic Minimum and Maximum Width/Height

    - -

    Your application may have more complex rules for determining an element's mins and maxes. This demo demonstrates how to use the `onResize` handler to accomplish this.

    -

    In this grid, all elements are allowed a max width of 2 if the height < 3, and a min width of 2 if the height >= 3.

    -
    - - diff --git a/examples/11-no-vertical-compact.html b/examples/11-no-vertical-compact.html deleted file mode 100644 index 7a1653b67..000000000 --- a/examples/11-no-vertical-compact.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 11 - No Vertical Compacting (Free Movement) - - -

    React-Grid-Layout Demo 11 - No Vertical Compacting (Free Movement)

    - -

    You may want to turn off vertical compacting so items can be placed anywhere in the grid. Set the property `verticalCompact` to `false` to achieve this effect.

    -
    - - diff --git a/examples/12-prevent-collision.html b/examples/12-prevent-collision.html deleted file mode 100644 index 7167ef16a..000000000 --- a/examples/12-prevent-collision.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 12 - Prevent Collision - - -

    React-Grid-Layout Demo 12 - Prevent Collision

    - -

    You may want to turn off rearrangement so items don't move arround when dragging. Set the property `preventCollision` to `true` to achieve this effect. It's particularly useful with `verticalCompact` set to `false`.

    -
    - - diff --git a/examples/13-error-case.html b/examples/13-error-case.html deleted file mode 100644 index 7a276c747..000000000 --- a/examples/13-error-case.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 13 - Error Case - - -

    React-Grid-Layout Demo 13 - Error Case

    - -

    This is an extra test case for a collision bug fixed in November 2017. When you drag 1 over 2, it should not move over 3.

    -
    - - diff --git a/examples/14-toolbox.html b/examples/14-toolbox.html deleted file mode 100644 index a0b135135..000000000 --- a/examples/14-toolbox.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 14 - Toolbox - - -

    React-Grid-Layout Demo 14 - Toolbox

    - -

    This demonstrates how to implement a toolbox to add and remove widgets.

    -
    - - diff --git a/examples/15-drag-from-outside.html b/examples/15-drag-from-outside.html deleted file mode 100644 index 95bc2d262..000000000 --- a/examples/15-drag-from-outside.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 15 - Drag From Outside - - -

    React-Grid-Layout Demo 15 - Drag From Outside

    - -

    This demo shows what happens when an item is added from outside of the grid.

    -

    Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with it accordingly.

    -
    - - diff --git a/examples/2-no-dragging.html b/examples/2-no-dragging.html deleted file mode 100644 index b8a913757..000000000 --- a/examples/2-no-dragging.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 2 - No Dragging - - -

    React-Grid-Layout Demo 2 - No Dragging

    - -

    This particular example has dragging and resizing turned off.

    -
    - - diff --git a/examples/3-messy.html b/examples/3-messy.html deleted file mode 100644 index 349b7ad2f..000000000 --- a/examples/3-messy.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - RGL Example 3 - Messy - - -

    React-Grid-Layout Demo 3 - Messy

    - -

    This demo shows what happens when elements are placed randomly all over the layout.

    -

    RGL does not auto-pack in the same fashion as other projects, such as jQuery Masonry. Packing is only done in the vertical dimension. If objects all have the same width, they will be packed efficiently.

    -

    If a layout is fed to RGL that has items with incorrect dimensions (width too big, overlapping other elements, out of bounds, etc), they will be automatically corrected on startup. See the source of this demo, where elements are placed randomly in the layout.

    -
    - - diff --git a/examples/4-grid-property.html b/examples/4-grid-property.html deleted file mode 100644 index 44e38e8ee..000000000 --- a/examples/4-grid-property.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 4 - Grid Item Properties - - -

    React-Grid-Layout Demo 4 - Grid Item Properties

    - -

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

    -
    - - diff --git a/examples/5-static-elements.html b/examples/5-static-elements.html deleted file mode 100644 index 3171038d4..000000000 --- a/examples/5-static-elements.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - RGL Example 5 - Static Elements - - -

    React-Grid-Layout Demo 5 - Static Elements

    - -

    This demo sets an item to static. Static elements cannot be moved or resized. Other elements move themselves around a static element.

    -
    - - diff --git a/examples/6-dynamic-add-remove.html b/examples/6-dynamic-add-remove.html deleted file mode 100644 index 1fb003f81..000000000 --- a/examples/6-dynamic-add-remove.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - RGL Example 6 - Dynamic Add/Remove - - -

    React-Grid-Layout Demo 6 - Dynamic Add/Remove

    - -

    This demo shows what happens when items are dynamically added and removed.

    -

    You can remove an item by clicking its "x", and add a new one with the button.

    -

    To further illustration RGL's capacities, this particular example is responsive. Trying resizing the window.

    -
    - - diff --git a/examples/7-localstorage.html b/examples/7-localstorage.html deleted file mode 100644 index d7888624d..000000000 --- a/examples/7-localstorage.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - RGL Example 7 - LocalStorage - - -

    React-Grid-Layout Demo 7 - LocalStorage

    - -

    This simple demo synchronizes to localStorage.

    -

    Try moving and resizing elements, then reloading.

    -
    - - diff --git a/examples/8-localstorage-responsive.html b/examples/8-localstorage-responsive.html deleted file mode 100644 index 7d97b34db..000000000 --- a/examples/8-localstorage-responsive.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - RGL Example 8 - Responsive with LocalStorage - - -

    React-Grid-Layout Demo 8 - Responsive with LocalStorage

    - -

    This simple demo synchronizes to localStorage for each responsive breakpoint.

    -

    Try moving and resizing elements, changing window width, moving some more, and refreshing.

    -

    Each breakpoint has a separate layout. The onLayoutChange callback calls back with a hash of breakpoints to layouts, which is then synchronized to localStorage.

    -
    - - diff --git a/examples/9-min-max-wh.html b/examples/9-min-max-wh.html deleted file mode 100644 index 92a469da8..000000000 --- a/examples/9-min-max-wh.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - RGL Example 9 - Minimum and Maximum Width/Height - - -

    React-Grid-Layout Demo 9 - Minimum and Maximum Width/Height

    - -

    You can set min and max dimensions on a grid item by using the `minW`, `maxW`, `minH`, and `maxH` properties.

    -

    In this demo, the min and max dimensions are generated automatically. Try resizing the items below.

    -

    If your mins and maxes collide: for example min > max, or the initial dimensions are out of range, an error will be thrown.

    -
    - - diff --git a/examples/generate.js b/examples/generate.js index 363f3c3eb..96fe55cb6 100644 --- a/examples/generate.js +++ b/examples/generate.js @@ -1,20 +1,23 @@ "use strict"; -var fs = require("fs"); -var ejs = require("ejs"); -var data = require("./vars"); -var tpl = fs.readFileSync(__dirname + "/template.ejs").toString(); +const fs = require("fs"); +const ejs = require("ejs"); +const data = require("./vars"); +const tpl = fs.readFileSync(__dirname + "/template.ejs").toString(); -var base = "http://localhost:4002"; -var banner = +const base = process.env.CONTENT_BASE; +if (typeof base !== "string") { + throw new Error("env CONTENT_BASE is required to be set."); +} +const banner = "Do not edit this file! It is generated by `generate.js` in this folder, from `template.ejs` and " + "vars.js."; data.forEach(function(datum, i) { - datum.base = base; + datum.base = base.replace(/\/$/, ""); // trim trailing slash datum.index = i; datum.banner = banner; datum.previous = data[i - 1]; datum.next = data[i + 1]; - var html = ejs.render(tpl, datum); + const html = ejs.render(tpl, datum); fs.writeFileSync(__dirname + "/" + i + "-" + datum.source + ".html", html); }); diff --git a/examples/template.ejs b/examples/template.ejs index c68c24fd9..f47fa0af5 100644 --- a/examples/template.ejs +++ b/examples/template.ejs @@ -5,8 +5,8 @@ - - + + RGL Example <%= index %> - <%= title %> diff --git a/webpack-examples.config.js b/webpack-examples.config.js index a49569198..08960d077 100644 --- a/webpack-examples.config.js +++ b/webpack-examples.config.js @@ -21,7 +21,7 @@ module.exports = { } }, output: { - path: __dirname + "/dist", + path: __dirname + "/examples", filename: "[name].js", sourceMapFilename: "[file].map" }, From 8a2a0dc6a627524a7e275d2eb6ebff669e61b584 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 10 Oct 2019 09:38:43 -0400 Subject: [PATCH 038/101] fix(prettier): ignore dist/ and example/ Otherwise prettier will churn on these and screw up our builds --- .prettierignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..dedaa6dc8 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +dist/ +examples/ From 056c6f2940a187305e670a6ad902bbc3808ff4e8 Mon Sep 17 00:00:00 2001 From: Maksim Andreev Date: Fri, 11 Oct 2019 21:00:30 +0700 Subject: [PATCH 039/101] Explicitly use default prettier config (#1041) Explicitly use default prettier config --- .prettierrc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..95da445fa --- /dev/null +++ b/.prettierrc @@ -0,0 +1,18 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": false, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "arrowParens": "avoid", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "css", + "endOfLine": "auto" +} From 1a1ab9826aa8b2681b28937ef68bdebe0b85a23a Mon Sep 17 00:00:00 2001 From: Sergey Golovin Date: Fri, 11 Oct 2019 17:02:12 +0300 Subject: [PATCH 040/101] fix: remove dropping placeholder on drag leave (#1033) --- lib/ReactGridLayout.jsx | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index e5aa07b86..a97f5e4f1 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -289,6 +289,8 @@ export default class ReactGridLayout extends React.Component { children: [] }; + dragEnterCounter = 0; + constructor(props: Props, context: any): void { super(props, context); autoBindHandlers(this, [ @@ -743,11 +745,10 @@ export default class ReactGridLayout extends React.Component { e.preventDefault(); }; - onDrop = () => { + removeDroppingPlaceholder = () => { const { droppingItem, cols } = this.props; const { layout } = this.state; - const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {}; const newLayout = compact( layout.filter(l => l.i !== droppingItem.i), compactType(this.props), @@ -760,6 +761,34 @@ export default class ReactGridLayout extends React.Component { activeDrag: null, droppingPosition: undefined }); + }; + + onDragLeave = () => { + this.dragEnterCounter--; + + // onDragLeave can be triggered on each layout's child. + // But we know that count of dragEnter and dragLeave events + // will be balanced after leaving the layout's container + // so we can increase and decrease count of dragEnter and + // when it'll be equal to 0 we'll remove the placeholder + if (this.dragEnterCounter === 0) { + this.removeDroppingPlaceholder(); + } + }; + + onDragEnter = () => { + this.dragEnterCounter++; + }; + + onDrop = () => { + const { droppingItem } = this.props; + const { layout } = this.state; + const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {}; + + // reset gragEnter counter on drop + this.dragEnterCounter = 0; + + this.removeDroppingPlaceholder(); this.props.onDrop({ x, y, w, h }); }; @@ -778,6 +807,8 @@ export default class ReactGridLayout extends React.Component { className={mergedClassName} style={mergedStyle} onDrop={isDroppable ? this.onDrop : noop} + onDragLeave={isDroppable ? this.onDragLeave : noop} + onDragEnter={isDroppable ? this.onDragEnter : noop} onDragOver={isDroppable ? this.onDragOver : noop} > {React.Children.map(this.props.children, child => From 3d91fe15a361fdac96de3a4c4cf0ea3a81143a50 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Fri, 11 Oct 2019 10:06:21 -0400 Subject: [PATCH 041/101] chore(examples): make flash of unstyled content less jarring --- examples/example-styles.css | 6 ------ examples/template.ejs | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/examples/example-styles.css b/examples/example-styles.css index b54e70742..194290fe6 100644 --- a/examples/example-styles.css +++ b/examples/example-styles.css @@ -1,7 +1,5 @@ body { - background: white; padding: 20px; - overflow: scroll; } #content { width: 100%; @@ -56,10 +54,6 @@ body { cursor: -moz-grab; cursor: -webkit-grab; } -li b { - font-size: 19px; - line-height: 14px; -} .toolbox { background-color: #dfd; diff --git a/examples/template.ejs b/examples/template.ejs index f47fa0af5..5b6953139 100644 --- a/examples/template.ejs +++ b/examples/template.ejs @@ -7,6 +7,7 @@ + RGL Example <%= index %> - <%= title %> From 6346836e45e77f1de0b63241c50f480f518eb157 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 22 Oct 2019 13:17:39 -0400 Subject: [PATCH 042/101] refactor(GridItem): save some work when dragging/resizing Added comments for clarity --- lib/GridItem.jsx | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 4cfc1b9b6..334485e91 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -242,31 +242,35 @@ export default class GridItem extends React.Component { ): Position { const { margin, containerPadding, rowHeight } = this.props; const colWidth = this.calcColWidth(); + const out = {}; - const out = { - left: Math.round((colWidth + margin[0]) * x + containerPadding[0]), - top: Math.round((rowHeight + margin[1]) * y + containerPadding[1]), + // If resizing, use the exact width and height as returned from resizing callbacks. + if (state && state.resizing) { + out.width = Math.round(state.resizing.width); + out.height = Math.round(state.resizing.height); + } + // Otherwise, calculate from grid units. + else { // 0 * Infinity === NaN, which causes problems with resize constraints; // Fix this if it occurs. // Note we do it here rather than later because Math.round(Infinity) causes deopt - width: - w === Infinity + out.width = w === Infinity ? w - : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]), - height: - h === Infinity - ? h - : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]) - }; - - if (state && state.resizing) { - out.width = Math.round(state.resizing.width); - out.height = Math.round(state.resizing.height); + : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]); + out.height = h === Infinity + ? h + : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]); } + // If dragging, use the exact width and height as returned from dragging callbacks. if (state && state.dragging) { out.top = Math.round(state.dragging.top); out.left = Math.round(state.dragging.left); + } + // Otherwise, calculate from grid units. + else { + out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]); + out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]); } return out; From 451d4829d065f22241dcd7721241e871b5097fff Mon Sep 17 00:00:00 2001 From: Olga Polikashina Date: Thu, 24 Oct 2019 15:44:16 +0300 Subject: [PATCH 043/101] Resizable handles on other corners --- README.md | 18 +++++++++++++++--- css/styles.css | 5 ++++- lib/GridItem.jsx | 5 ++++- lib/ReactGridLayout.jsx | 20 +++++++++++++++++++- lib/utils.js | 6 ++++-- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 631fe637c..7156192ba 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ containerPadding: ?[number, number] = margin, // if you like. rowHeight: ?number = 150, -// Configuration of a dropping element. Dropping element is a "virtual" element +// Configuration of a dropping element. Dropping element is a "virtual" element // which appears when you drag over some element from outside. // It can be changed by passing specific parameters: // i - id of an element @@ -311,9 +311,9 @@ transformScale: ?number = 1, // dragged over. preventCollision: ?boolean = false; -// If true, droppable elements (with `draggable={true}` attribute) +// If true, droppable elements (with `draggable={true}` attribute) // can be dropped on the grid. It triggers "onDrop" callback -// with position and event object as parameters. +// with position and event object as parameters. // It can be useful for dropping an element in a specific position // // NOTE: In case of using Firefox you should add @@ -322,6 +322,17 @@ preventCollision: ?boolean = false; // onDragStart attribute is required for Firefox for a dragging initialization // @see https://bugzilla.mozilla.org/show_bug.cgi?id=568313 isDroppable: ?boolean = false +// Defines which resize handles should be rendered +// Allows for any combination of: +// 's' - South handle (bottom-center) +// 'w' - West handle (left-center) +// 'e' - East handle (right-center) +// 'n' - North handle (top-center) +// 'sw' - Southwest handle (bottom-left) +// 'nw' - Northwest handle (top-left) +// 'se' - Southeast handle (bottom-right) +// 'ne' - Northeast handle (top-center) +resizeHandles: ?string[] = ['se'] // // Callbacks @@ -437,6 +448,7 @@ will be draggable. isDraggable: ?boolean = true, // If false, will not be resizable. Overrides `static`. isResizable: ?boolean = true + resizeHandles?: ?Array<'s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne'> = ['se'] } ``` diff --git a/css/styles.css b/css/styles.css index a3ab10221..ed79e95f9 100644 --- a/css/styles.css +++ b/css/styles.css @@ -42,7 +42,6 @@ height: 20px; bottom: 0; right: 0; - cursor: se-resize; } .react-grid-item > .react-resizable-handle::after { @@ -55,3 +54,7 @@ border-right: 2px solid rgba(0, 0, 0, 0.4); border-bottom: 2px solid rgba(0, 0, 0, 0.4); } + +.react-resizable-handle { + cursor: se-resize; +} diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 4cfc1b9b6..b48ecdd1e 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -63,6 +63,8 @@ type Props = { maxH: number, i: string, + resizeHandles?: string[], + onDrag?: GridItemCallback, onDragStart?: GridItemCallback, onDragStop?: GridItemCallback, @@ -390,7 +392,7 @@ export default class GridItem extends React.Component { child: ReactElement, position: Position ): ReactElement { - const { cols, x, minW, minH, maxW, maxH } = this.props; + const { cols, x, minW, minH, maxW, maxH, resizeHandles } = this.props; // This is the max possible width - doesn't go to infinity because of the width of the window const maxWidth = this.calcPosition(0, 0, cols - x, 0).width; @@ -412,6 +414,7 @@ export default class GridItem extends React.Component { onResizeStop={this.onResizeStop} onResizeStart={this.onResizeStart} onResize={this.onResize} + resizeHandles={resizeHandles} > {child} diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index a97f5e4f1..83069dfdb 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -71,6 +71,7 @@ export type Props = { useCSSTransforms: boolean, transformScale: number, droppingItem: $Shape, + resizeHandles: string[], // Callbacks onLayoutChange: Layout => void, @@ -184,6 +185,19 @@ export default class ReactGridLayout extends React.Component { transformScale: PropTypes.number, // If true, an external element can trigger onDrop callback with a specific grid position as a parameter isDroppable: PropTypes.bool, + // Defines which resize handles should be rendered (default: 'se') + // Allows for any combination of: + // 's' - South handle (bottom-center) + // 'w' - West handle (left-center) + // 'e' - East handle (right-center) + // 'n' - North handle (top-center) + // 'sw' - Southwest handle (bottom-left) + // 'nw' - Northwest handle (top-left) + // 'se' - Southeast handle (bottom-right) + // 'ne' - Northeast handle (top-center) + resizeHandles: PropTypes.arrayOf( + PropTypes.oneOf(["s", "w", "e", "n", "sw", "nw", "se", "ne"]) + ), // // Callbacks @@ -262,6 +276,7 @@ export default class ReactGridLayout extends React.Component { h: 1, w: 1 }, + resizeHandles: ["se"], onLayoutChange: noop, onDragStart: noop, onDrag: noop, @@ -654,7 +669,8 @@ export default class ReactGridLayout extends React.Component { useCSSTransforms, transformScale, draggableCancel, - draggableHandle + draggableHandle, + resizeHandles } = this.props; const { mounted, droppingPosition } = this.state; @@ -665,6 +681,7 @@ export default class ReactGridLayout extends React.Component { const resizable = Boolean( !l.static && isResizable && (l.isResizable || l.isResizable == null) ); + const resizeHandlesOptions = l.resizeHandles || resizeHandles; return ( { maxW={l.maxW} static={l.static} droppingPosition={isDroppingItem ? droppingPosition : undefined} + resizeHandles={resizeHandlesOptions} > {child} diff --git a/lib/utils.js b/lib/utils.js index 433b0aa2f..5822567cd 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -18,7 +18,8 @@ export type LayoutItem = { moved?: boolean, static?: boolean, isDraggable?: ?boolean, - isResizable?: ?boolean + isResizable?: ?boolean, + resizeHandles?: string[] }; export type Layout = Array; export type Position = { @@ -113,7 +114,8 @@ export function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem { static: Boolean(layoutItem.static), // These can be null isDraggable: layoutItem.isDraggable, - isResizable: layoutItem.isResizable + isResizable: layoutItem.isResizable, + resizeHandles: layoutItem.resizeHandles }; } From e46f9f1ebc29b410d41c0d30815ac445e53ade2a Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 24 Oct 2019 09:39:36 -0400 Subject: [PATCH 044/101] chore(pkg): minor dep update & upgrade react-resizable to 1.9.0 We should now be completely past the React 16.9 lifecycle deprecation! --- package.json | 20 +++---- yarn.lock | 164 +++++++++++++++++++++++++-------------------------- 2 files changed, 89 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index b016d6f4d..da0999835 100644 --- a/package.json +++ b/package.json @@ -40,11 +40,11 @@ "lodash.isequal": "^4.0.0", "prop-types": "^15.0.0", "react-draggable": "^4.0.0", - "react-resizable": "^1.0.0" + "react-resizable": "^1.9.0" }, "devDependencies": { - "@babel/cli": "^7.6.3", - "@babel/core": "^7.6.0", + "@babel/cli": "^7.6.4", + "@babel/core": "^7.6.4", "@babel/plugin-proposal-class-properties": "^7.5.5", "@babel/plugin-transform-flow-comments": "^7.6.0", "@babel/preset-env": "^7.6.0", @@ -58,25 +58,25 @@ "ejs": "^2.7.1", "eslint": "^6.4.0", "eslint-plugin-flowtype": "^4.3.0", - "eslint-plugin-mocha": "^6.1.1", + "eslint-plugin-mocha": "^6.2.0", "eslint-plugin-react": "^7.14.3", "exports-loader": "^0.7.0", - "flow-bin": "^0.109.0", - "husky": "^3.0.8", + "flow-bin": "^0.110.1", + "husky": "^3.0.9", "imports-loader": "^0.8.0", "jest-cli": "^24.9.0", "lint-staged": "^9.2.5", "lodash": "^4.17.5", "opener": "^1.4.3", "prettier": "^1.18.2", - "react": "^16.9.0", - "react-dom": "^16.9.0", + "react": "^16.11.0", + "react-dom": "^16.11.0", "react-hot-loader": "^4.12.13", "react-transform-hmr": "^1.0.2", "style-loader": "^1.0.0", - "webpack": "^4.40.2", + "webpack": "^4.41.2", "webpack-cli": "^3.3.9", - "webpack-dev-server": "^3.8.1" + "webpack-dev-server": "^3.9.0" }, "publishConfig": { "registry": "https://registry.npmjs.org" diff --git a/yarn.lock b/yarn.lock index e90ad20e8..f91e3b771 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@babel/cli@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.3.tgz#1b0c62098c8a5e01e4a4a59a52cba9682e7e0906" - integrity sha512-kWKOEeuylpa781yCeA5//eEx1u3WtLZqbi2VWXLKmb3QDPb5T2f7Yk311MK7bvvjR70dluAeiu4VXXsG1WwJsw== +"@babel/cli@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.4.tgz#9b35a4e15fa7d8f487418aaa8229c8b0bc815f20" + integrity sha512-tqrDyvPryBM6xjIyKKUwr3s8CzmmYidwgdswd7Uc/Cv0ogZcuS1TYQTLx/eWKP3UbJ6JxZAiYlBZabXm/rtRsQ== dependencies: commander "^2.8.1" convert-source-map "^1.1.0" @@ -15,7 +15,7 @@ mkdirp "^0.5.1" output-file-sync "^2.0.0" slash "^2.0.0" - source-map "^0.6.1" + source-map "^0.5.0" optionalDependencies: chokidar "^2.1.8" @@ -26,15 +26,15 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.1.0", "@babel/core@^7.6.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.3.tgz#44de824e89eaa089bb12da7337bc9bdff2ab68f9" - integrity sha512-QfQ5jTBgXLzJuo7Mo8bZK/ePywmgNRgk/UQykiKwEtZPiFIn8ZqE6jB+AnD1hbB1S2xQyL4//it5vuAUOVAMTw== +"@babel/core@^7.1.0", "@babel/core@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" + integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.3" + "@babel/generator" "^7.6.4" "@babel/helpers" "^7.6.2" - "@babel/parser" "^7.6.3" + "@babel/parser" "^7.6.4" "@babel/template" "^7.6.0" "@babel/traverse" "^7.6.3" "@babel/types" "^7.6.3" @@ -44,17 +44,17 @@ lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" - source-map "^0.6.1" + source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.3.tgz#71d5375264f93ec7bac7d9f35a67067733f5578e" - integrity sha512-hLhYbAb3pHwxjlijC4AQ7mqZdcoujiNaW7izCT04CIowHK8psN0IN8QjDv0iyFtycF5FowUOTwDloIheI25aMw== +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" + integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== dependencies: "@babel/types" "^7.6.3" jsesc "^2.5.1" lodash "^4.17.13" - source-map "^0.6.1" + source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" @@ -249,10 +249,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.3.tgz#9eff8b9c3eeae16a74d8d4ff30da2bd0d6f0487e" - integrity sha512-sUZdXlva1dt2Vw2RqbMkmfoImubO0D0gaCrNngV6Hi0DA4x3o4mlrq0tbfY0dZEUIccH8I6wQ4qgEtwcpOR6Qg== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" + integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -1466,10 +1466,12 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" asynckit@^0.4.0: version "0.4.0" @@ -2364,7 +2366,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2758,10 +2760,10 @@ eslint-plugin-flowtype@^4.3.0: dependencies: lodash "^4.17.15" -eslint-plugin-mocha@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.1.1.tgz#5a036f2f806e1a5fb7d19f7538ebeff3afb15377" - integrity sha512-p/otruG425jRYDa28HjbBYYXoFNzq3Qp++gn5dbE44Kz4NvmIsSUKSV1T+RLYUcZOcdJKKAftXbaqkHFqReKoA== +eslint-plugin-mocha@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.0.tgz#16ff9ce4d5a6a35af522d5db0ce3c8946566e4c1" + integrity sha512-vE/+tHJVom2BkMOiwkOKcAM5YqGPk3C6gMvQ32DHihKkaXF6vmxtj3UEOg64wP3m8/Zk5V/UmQbFE5nqu1EXSg== dependencies: ramda "^0.26.1" @@ -3267,10 +3269,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flow-bin@^0.109.0: - version "0.109.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.109.0.tgz#dcdcb7402dd85b58200392d8716ccf14e5a8c24c" - integrity sha512-tpcMTpAGIRivYhFV3KJq+zHI2HzcXo8MoGe9pXS4G/UZuey2Faq/e8/gdph2WF0erRlML5hmwfwiq7v9c25c7w== +flow-bin@^0.110.1: + version "0.110.1" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.110.1.tgz#24ac70bf0871a5d6bc181ba99801ded4d5e3b442" + integrity sha512-6FhvNKNvPQ523mx7sqNxTQvI/HgAWa/pbIsQuCst53qRqs387EFfYqgm4I3Zae5HLaVFacBwgWKmjKd92vf19w== flush-write-stream@^1.0.0: version "1.1.1" @@ -3777,20 +3779,20 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -husky@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.8.tgz#8de3fed26ce9b43034ef51013c4ad368b6b74ea8" - integrity sha512-HFOsgcyrX3qe/rBuqyTt+P4Gxn5P0seJmr215LAZ/vnwK3jWB3r0ck7swbzGRUbufCf9w/lgHPVbF/YXQALgfQ== +husky@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.9.tgz#a2c3e9829bfd6b4957509a9500d2eef5dbfc8044" + integrity sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg== dependencies: chalk "^2.4.2" + ci-info "^2.0.0" cosmiconfig "^5.2.1" execa "^1.0.0" get-stdin "^7.0.0" - is-ci "^2.0.0" opencollective-postinstall "^2.0.2" pkg-dir "^4.2.0" please-upgrade-node "^3.2.0" - read-pkg "^5.1.1" + read-pkg "^5.2.0" run-node "^1.0.0" slash "^3.0.0" @@ -5258,7 +5260,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -6026,14 +6028,14 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -portfinder@^1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -6303,25 +6305,17 @@ react-deep-force-update@^1.0.0: resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA== -react-dom@^16.9.0: - version "16.10.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.10.2.tgz#4840bce5409176bc3a1f2bd8cb10b92db452fda6" - integrity sha512-kWGDcH3ItJK4+6Pl9DZB16BXYAZyrYQItU4OMy0jAkv5aNqc+mAKb4TpFtAteI6TJZu+9ZlNhaeNQSVQDHJzkw== +react-dom@^16.11.0: + version "16.11.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.11.0.tgz#7e7c4a5a85a569d565c2462f5d345da2dd849af5" + integrity sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.16.2" + scheduler "^0.17.0" -react-draggable@^3.0.3: - version "3.3.2" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-3.3.2.tgz#966ef1d90f2387af3c2d8bd3516f601ea42ca359" - integrity sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA== - dependencies: - classnames "^2.2.5" - prop-types "^15.6.0" - -react-draggable@^4.0.0: +react-draggable@^4.0.0, react-draggable@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.0.3.tgz#6b9f76f66431c47b9070e9b805bbc520df8ca481" integrity sha512-4vD6zms+9QGeZ2RQXzlUBw8PBYUXy+dzYX5r22idjp9YwQKIIvD/EojL0rbjS1GK4C3P0rAJnmKa8gDQYWUDyA== @@ -6361,13 +6355,13 @@ react-proxy@^1.1.7: lodash "^4.6.1" react-deep-force-update "^1.0.0" -react-resizable@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.8.0.tgz#a6dd8c90826f1e54244141b770318e0320663a43" - integrity sha512-lfYlCelPyUL8GLYd4SgFtZOrFY8XpxpDwXjgGHLiLM2aMv7mEkBT8Jn5MUV1TCinF5mIro4CMezfnniAZEkGvg== +react-resizable@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.9.0.tgz#7426f06852180e6844bbbc32ead67760d2904a65" + integrity sha512-YAls7H4+34MMDg2cPnhVfLtes//XWvrLNuxbVwawwJFIGlPvhGi8BLCcIsDdLJ2CCCxtymVotk2Hq4RtPJ7t5g== dependencies: prop-types "15.x" - react-draggable "^3.0.3" + react-draggable "^4.0.3" react-transform-hmr@^1.0.2: version "1.0.4" @@ -6377,10 +6371,10 @@ react-transform-hmr@^1.0.2: global "^4.3.0" react-proxy "^1.1.7" -react@^16.9.0: - version "16.10.2" - resolved "https://registry.yarnpkg.com/react/-/react-16.10.2.tgz#a5ede5cdd5c536f745173c8da47bda64797a4cf0" - integrity sha512-MFVIq0DpIhrHFyqLU0S3+4dIcBhhOvBE8bJ/5kHPVOVaGdo0KuiQzpcjCPsf585WvhypqtrMILyoE2th6dT+Lw== +react@^16.11.0: + version "16.11.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.11.0.tgz#d294545fe62299ccee83363599bf904e4a07fdbb" + integrity sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6403,7 +6397,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.1.1: +read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -6763,10 +6757,10 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.16.2.tgz#f74cd9d33eff6fc554edfb79864868e4819132c1" - integrity sha512-BqYVWqwz6s1wZMhjFvLfVR5WXP7ZY32M/wYPo04CcuPM7XZEbV2TBNW7Z0UkguPTl0dWMA59VbNXxK6q+pHItg== +scheduler@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" + integrity sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -7840,10 +7834,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.8.1: - version "3.8.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz#3292427bf6510da9a3ac2d500b924a4197667ff9" - integrity sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ== +webpack-dev-server@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" + integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -7863,7 +7857,7 @@ webpack-dev-server@^3.8.1: loglevel "^1.6.4" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.24" + portfinder "^1.0.25" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" @@ -7895,10 +7889,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.40.2: - version "4.41.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" - integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== +webpack@^4.41.2: + version "4.41.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" + integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" From d121e0b91c2f7aa744212424ab8ecb52ce57bf9a Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 24 Oct 2019 10:10:46 -0400 Subject: [PATCH 045/101] chore(pkg): upgrade flowconfig expected version --- .flowconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.flowconfig b/.flowconfig index a1cd99e62..794b4b18d 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,5 @@ [version] -0.109.0 +0.110.1 [ignore] From c6304002c03fcdfcdbabe72b212c62e72268ceaa Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Thu, 24 Oct 2019 10:11:21 -0400 Subject: [PATCH 046/101] release 0.17.0 --- CHANGELOG.md | 35 + dist/react-grid-layout.min.js | 4946 +---------------------------- dist/react-grid-layout.min.js.map | 2 +- package.json | 4 +- 4 files changed, 46 insertions(+), 4941 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67069df0e..f92987e2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,40 @@ # Changelog +0.17.0 (Oct 24, 2019) +---- + +It's been 18 months since the last release, and this is a pretty large one! For references on the items below, see https://github.com/STRML/react-grid-layout/milestone/1?closed=1. + +Thanks to @daynin and @n1ghtmare for taking an active role in maintaining RGL, and for giving it a much-needed shot in the arm, and thanks to the rest of our contributors. + +### New Features + +- Added ability to drag items into the grid from outside. [#980](https://github.com/STRML/react-grid-layout/pull/980). See [the example](https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html). + - This is especially exciting as it opens up new "widget toolbox" use cases such as [Example 14](https://strml.github.io/react-grid-layout/examples/14-toolbox.html) with more intuitive interaction. Thanks @daynin. +- `transformScale` prop [#987](https://github.com/STRML/react-grid-layout/pull/987) +- `` now supports margin-per-breakpoint [#1016](https://github.com/STRML/react-grid-layout/pull/1016) + + +### Bugfixes + +- `onWidthChange` only called on breakpoint changes [#770](https://github.com/STRML/react-grid-layout/pull/770) +- Various movement bugs when compaction is off [#766](https://github.com/STRML/react-grid-layout/pull/766) +- Don't fire `onDragStop` if an item is only clicked, not dragged [#1023](https://github.com/STRML/react-grid-layout/pull/1023) +- Fix infinite loop when dragging over a static element. [#1019](https://github.com/STRML/react-grid-layout/pull/1019) + +### Internal Refactors + +- Both `react-draggable` and `react-resizable` dependencies are now React 16.9 compatible, as is now `react-grid-layout`. + - [RGL PR #990](https://github.com/STRML/react-grid-layout/pull/990) + - [react-resizable](https://github.com/STRML/react-resizable/pull/112/commits/541dee69b8e45d91a533855609472b481634edee) + - [react-draggable](https://github.com/mzabriskie/react-draggable/commit/fea778c8e89db2a4e1a35e563b65634f8146e7e4) +- Webpack 4 [#907](https://github.com/STRML/react-grid-layout/pull/907) +- Babel 7 [#1013](https://github.com/STRML/react-grid-layout/pull/1013) +- Flow 0.110 [#995](https://github.com/STRML/react-grid-layout/pull/995) +- Jest [#774](https://github.com/STRML/react-grid-layout/pull/774) +- Various build simplifications [#773](https://github.com/STRML/react-grid-layout/pull/773) +- Various PR bots - thanks @daynin + 0.16.6 (Mar 8, 2018) ---- diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index 121c72e29..9bd53240f 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -1,4942 +1,12 @@ -!(function(t, e) { - "object" == typeof exports && "object" == typeof module - ? (module.exports = e(require("react"), require("react-dom"))) - : "function" == typeof define && define.amd - ? define(["react", "react-dom"], e) - : "object" == typeof exports - ? (exports.ReactGridLayout = e(require("react"), require("react-dom"))) - : (t.ReactGridLayout = e(t.React, t.ReactDOM)); -})("undefined" != typeof self ? self : this, function(t, e) { - return (function(t) { - function e(r) { - if (n[r]) return n[r].exports; - var o = (n[r] = { i: r, l: !1, exports: {} }); - return t[r].call(o.exports, o, o.exports, e), (o.l = !0), o.exports; - } - var n = {}; - return ( - (e.m = t), - (e.c = n), - (e.d = function(t, n, r) { - e.o(t, n) || - Object.defineProperty(t, n, { - configurable: !1, - enumerable: !0, - get: r - }); - }), - (e.n = function(t) { - var n = - t && t.__esModule - ? function() { - return t.default; - } - : function() { - return t; - }; - return e.d(n, "a", n), n; - }), - (e.o = function(t, e) { - return Object.prototype.hasOwnProperty.call(t, e); - }), - (e.p = ""), - e((e.s = 10)) - ); - })([ - function(e, n) { - e.exports = t; - }, - function(t, e, n) { - t.exports = n(11)(); - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t) { - for (var e = 0, n = void 0, r = 0, o = t.length; r < o; r++) - (n = t[r].y + t[r].h) > e && (e = n); - return e; - } - function a(t) { - for (var e = Array(t.length), n = 0, r = t.length; n < r; n++) - e[n] = i(t[n]); - return e; - } - function i(t) { - return { - w: t.w, - h: t.h, - x: t.x, - y: t.y, - i: t.i, - minW: t.minW, - maxW: t.maxW, - minH: t.minH, - maxH: t.maxH, - moved: Boolean(t.moved), - static: Boolean(t.static), - isDraggable: t.isDraggable, - isResizable: t.isResizable - }; - } - function s(t, e) { - return (0, z.default)( - k.default.Children.map(t, function(t) { - return t.key; - }), - k.default.Children.map(e, function(t) { - return t.key; - }) - ); - } - function u(t, e) { - return ( - t !== e && - (!(t.x + t.w <= e.x) && - (!(t.x >= e.x + e.w) && - (!(t.y + t.h <= e.y) && !(t.y >= e.y + e.h)))) - ); - } - function l(t, e, n) { - for ( - var r = g(t), o = S(t, e), a = Array(t.length), s = 0, u = o.length; - s < u; - s++ - ) { - var l = i(o[s]); - l.static || ((l = f(r, l, e, n, o)), r.push(l)), - (a[t.indexOf(o[s])] = l), - (l.moved = !1); - } - return a; - } - function c(t, e, n, r) { - var o = N[r]; - e[r] += 1; - for (var a = t.indexOf(e), i = a + 1; i < t.length; i++) { - var s = t[i]; - if (!s.static) { - if (s.y > e.y + e.h) break; - u(e, s) && c(t, s, n + e[o], r); - } - } - e[r] = n; - } - function f(t, e, n, r, a) { - var i = "vertical" === n, - s = "horizontal" === n; - if (i) for (e.y = Math.min(o(t), e.y); e.y > 0 && !h(t, e); ) e.y--; - else if (s) - for (e.y = Math.min(o(t), e.y); e.x > 0 && !h(t, e); ) e.x--; - for (var u = void 0; (u = h(t, e)); ) - s ? c(a, e, u.x + u.w, "x") : c(a, e, u.y + u.h, "y"), - s && e.x + e.w > r && ((e.x = r - e.w), e.y++); - return e; - } - function p(t, e) { - for (var n = g(t), r = 0, o = t.length; r < o; r++) { - var a = t[r]; - if ( - (a.x + a.w > e.cols && (a.x = e.cols - a.w), - a.x < 0 && ((a.x = 0), (a.w = e.cols)), - a.static) - ) - for (; h(n, a); ) a.y++; - else n.push(a); - } - return t; - } - function d(t, e) { - for (var n = 0, r = t.length; n < r; n++) if (t[n].i === e) return t[n]; - } - function h(t, e) { - for (var n = 0, r = t.length; n < r; n++) if (u(t[n], e)) return t[n]; - } - function y(t, e) { - return t.filter(function(t) { - return u(t, e); - }); - } - function g(t) { - return t.filter(function(t) { - return t.static; - }); - } - function m(t, e, n, r, o, a, i, s) { - if (e.static) return t; - if (e.y === r && e.x === n) return t; - E( - "Moving element " + - e.i + - " to [" + - String(n) + - "," + - String(r) + - "] from [" + - e.x + - "," + - e.y + - "]" - ); - var u = e.x, - l = e.y; - "number" == typeof n && (e.x = n), - "number" == typeof r && (e.y = r), - (e.moved = !0); - var c = S(t, i); - ("vertical" === i && "number" == typeof r - ? l >= r - : "horizontal" === i && "number" == typeof n && u >= n) && - (c = c.reverse()); - var f = y(c, e); - if (a && f.length) - return ( - E("Collision prevented on " + e.i + ", reverting."), - (e.x = u), - (e.y = l), - (e.moved = !1), - t - ); - for (var p = 0, d = f.length; p < d; p++) { - var h = f[p]; - E( - "Resolving collision between " + - e.i + - " at [" + - e.x + - "," + - e.y + - "] and " + - h.i + - " at [" + - h.x + - "," + - h.y + - "]" - ), - h.moved || - (t = h.static ? v(t, h, e, o, i, s) : v(t, e, h, o, i, s)); - } - return t; - } - function v(t, e, n, r, o, a) { - var i = "horizontal" === o, - s = "vertical" === o; - if (r) { - r = !1; - var u = { - x: i ? Math.max(e.x - n.w, 0) : n.x, - y: s ? Math.max(e.y - n.h, 0) : n.y, - w: n.w, - h: n.h, - i: "-1" - }; - if (!h(t, u)) - return ( - E( - "Doing reverse collision on " + - n.i + - " up to [" + - u.x + - "," + - u.y + - "]." - ), - m(t, n, i ? u.x : void 0, s ? u.y : void 0, r, !1, o, a) - ); - } - return m(t, n, i ? n.x + 1 : void 0, s ? n.y + 1 : void 0, r, !1, o, a); - } - function b(t) { - return 100 * t + "%"; - } - function w(t) { - var e = t.top, - n = t.left, - r = t.width, - o = t.height, - a = "translate(" + n + "px," + e + "px)"; - return { - transform: a, - WebkitTransform: a, - MozTransform: a, - msTransform: a, - OTransform: a, - width: r + "px", - height: o + "px", - position: "absolute" - }; - } - function x(t) { - return { - top: t.top + "px", - left: t.left + "px", - width: t.width + "px", - height: t.height + "px", - position: "absolute" - }; - } - function S(t, e) { - return "horizontal" === e ? O(t) : _(t); - } - function _(t) { - return [].concat(t).sort(function(t, e) { - return t.y > e.y || (t.y === e.y && t.x > e.x) - ? 1 - : t.y === e.y && t.x === e.x ? 0 : -1; - }); - } - function O(t) { - return [].concat(t).sort(function(t, e) { - return t.x > e.x || (t.x === e.x && t.y > e.y) ? 1 : -1; - }); - } - function R(t, e, n, r) { - t = t || []; - var a = []; - return ( - k.default.Children.forEach(e, function(e, n) { - var r = d(t, String(e.key)); - if (r) a[n] = i(r); - else { - !M && - e.props._grid && - console.warn( - "`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`." - ); - var s = e.props["data-grid"] || e.props._grid; - s - ? (M || D([s], "ReactGridLayout.children"), - (a[n] = i(T({}, s, { i: e.key })))) - : (a[n] = i({ w: 1, h: 1, x: 0, y: o(a), i: String(e.key) })); - } - }), - (a = p(a, { cols: n })), - (a = l(a, r, n)) - ); - } - function D(t) { - var e = - arguments.length > 1 && void 0 !== arguments[1] - ? arguments[1] - : "Layout", - n = ["x", "y", "w", "h"]; - if (!Array.isArray(t)) throw new Error(e + " must be an array!"); - for (var r = 0, o = t.length; r < o; r++) { - for (var a = t[r], i = 0; i < n.length; i++) - if ("number" != typeof a[n[i]]) - throw new Error( - "ReactGridLayout: " + - e + - "[" + - r + - "]." + - n[i] + - " must be a number!" - ); - if (a.i && "string" != typeof a.i) - throw new Error( - "ReactGridLayout: " + e + "[" + r + "].i must be a string!" - ); - if (void 0 !== a.static && "boolean" != typeof a.static) - throw new Error( - "ReactGridLayout: " + e + "[" + r + "].static must be a boolean!" - ); - } - } - function j(t, e) { - e.forEach(function(e) { - return (t[e] = t[e].bind(t)); - }); - } - function E() { - var t; - L && (t = console).log.apply(t, arguments); - } - (e.__esModule = !0), (e.noop = void 0); - var T = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }; - (e.bottom = o), - (e.cloneLayout = a), - (e.cloneLayoutItem = i), - (e.childrenEqual = s), - (e.collides = u), - (e.compact = l), - (e.compactItem = f), - (e.correctBounds = p), - (e.getLayoutItem = d), - (e.getFirstCollision = h), - (e.getAllCollisions = y), - (e.getStatics = g), - (e.moveElement = m), - (e.moveElementAwayFromCollision = v), - (e.perc = b), - (e.setTransform = w), - (e.setTopLeft = x), - (e.sortLayoutItems = S), - (e.sortLayoutItemsByRowCol = _), - (e.sortLayoutItemsByColRow = O), - (e.synchronizeLayoutWithChildren = R), - (e.validateLayout = D), - (e.autoBindHandlers = j); - var C = n(3), - z = r(C), - P = n(0), - k = r(P), - M = !0, - L = !1, - N = { x: "w", y: "h" }; - e.noop = function() {}; - }, - function(t, e, n) { - (function(t, n) { - function r(t, e) { - for ( - var n = -1, r = null == t ? 0 : t.length, o = 0, a = []; - ++n < r; - - ) { - var i = t[n]; - e(i, n, t) && (a[o++] = i); - } - return a; - } - function o(t, e) { - for (var n = -1, r = e.length, o = t.length; ++n < r; ) - t[o + n] = e[n]; - return t; - } - function a(t, e) { - for (var n = -1, r = null == t ? 0 : t.length; ++n < r; ) - if (e(t[n], n, t)) return !0; - return !1; - } - function i(t, e) { - for (var n = -1, r = Array(t); ++n < t; ) r[n] = e(n); - return r; - } - function s(t, e) { - return t.has(e); - } - function u(t, e) { - return null == t ? void 0 : t[e]; - } - function l(t) { - var e = -1, - n = Array(t.size); - return ( - t.forEach(function(t, r) { - n[++e] = [r, t]; - }), - n - ); - } - function c(t) { - var e = -1, - n = Array(t.size); - return ( - t.forEach(function(t) { - n[++e] = t; - }), - n - ); - } - function f(t) { - var e = -1, - n = null == t ? 0 : t.length; - for (this.clear(); ++e < n; ) { - var r = t[e]; - this.set(r[0], r[1]); - } - } - function p() { - (this.__data__ = Oe ? Oe(null) : {}), (this.size = 0); - } - function d(t) { - var e = this.has(t) && delete this.__data__[t]; - return (this.size -= e ? 1 : 0), e; - } - function h(t) { - var e = this.__data__; - if (Oe) { - var n = e[t]; - return n === vt ? void 0 : n; - } - return ie.call(e, t) ? e[t] : void 0; - } - function y(t) { - var e = this.__data__; - return Oe ? void 0 !== e[t] : ie.call(e, t); - } - function g(t, e) { - var n = this.__data__; - return ( - (this.size += this.has(t) ? 0 : 1), - (n[t] = Oe && void 0 === e ? vt : e), - this - ); - } - function m(t) { - var e = -1, - n = null == t ? 0 : t.length; - for (this.clear(); ++e < n; ) { - var r = t[e]; - this.set(r[0], r[1]); - } - } - function v() { - (this.__data__ = []), (this.size = 0); - } - function b(t) { - var e = this.__data__, - n = H(e, t); - return ( - !(n < 0) && - (n == e.length - 1 ? e.pop() : he.call(e, n, 1), --this.size, !0) - ); - } - function w(t) { - var e = this.__data__, - n = H(e, t); - return n < 0 ? void 0 : e[n][1]; - } - function x(t) { - return H(this.__data__, t) > -1; - } - function S(t, e) { - var n = this.__data__, - r = H(n, t); - return r < 0 ? (++this.size, n.push([t, e])) : (n[r][1] = e), this; - } - function _(t) { - var e = -1, - n = null == t ? 0 : t.length; - for (this.clear(); ++e < n; ) { - var r = t[e]; - this.set(r[0], r[1]); - } - } - function O() { - (this.size = 0), - (this.__data__ = { - hash: new f(), - map: new (we || m)(), - string: new f() - }); - } - function R(t) { - var e = Q(this, t).delete(t); - return (this.size -= e ? 1 : 0), e; - } - function D(t) { - return Q(this, t).get(t); - } - function j(t) { - return Q(this, t).has(t); - } - function E(t, e) { - var n = Q(this, t), - r = n.size; - return n.set(t, e), (this.size += n.size == r ? 0 : 1), this; - } - function T(t) { - var e = -1, - n = null == t ? 0 : t.length; - for (this.__data__ = new _(); ++e < n; ) this.add(t[e]); - } - function C(t) { - return this.__data__.set(t, vt), this; - } - function z(t) { - return this.__data__.has(t); - } - function P(t) { - var e = (this.__data__ = new m(t)); - this.size = e.size; - } - function k() { - (this.__data__ = new m()), (this.size = 0); - } - function M(t) { - var e = this.__data__, - n = e.delete(t); - return (this.size = e.size), n; - } - function L(t) { - return this.__data__.get(t); - } - function N(t) { - return this.__data__.has(t); - } - function A(t, e) { - var n = this.__data__; - if (n instanceof m) { - var r = n.__data__; - if (!we || r.length < mt - 1) - return r.push([t, e]), (this.size = ++n.size), this; - n = this.__data__ = new _(r); - } - return n.set(t, e), (this.size = n.size), this; - } - function W(t, e) { - var n = Le(t), - r = !n && Me(t), - o = !n && !r && Ne(t), - a = !n && !r && !o && Ae(t), - s = n || r || o || a, - u = s ? i(t.length, String) : [], - l = u.length; - for (var c in t) - (!e && !ie.call(t, c)) || - (s && - ("length" == c || - (o && ("offset" == c || "parent" == c)) || - (a && - ("buffer" == c || - "byteLength" == c || - "byteOffset" == c)) || - et(c, l))) || - u.push(c); - return u; - } - function H(t, e) { - for (var n = t.length; n--; ) if (st(t[n][0], e)) return n; - return -1; - } - function I(t, e, n) { - var r = e(t); - return Le(t) ? r : o(r, n(t)); - } - function B(t) { - return null == t - ? void 0 === t ? Ht : Pt - : ye && ye in Object(t) ? tt(t) : at(t); - } - function G(t) { - return dt(t) && B(t) == St; - } - function U(t, e, n, r, o) { - return ( - t === e || - (null == t || null == e || (!dt(t) && !dt(e)) - ? t !== t && e !== e - : q(t, e, n, r, U, o)) - ); - } - function q(t, e, n, r, o, a) { - var i = Le(t), - s = Le(e), - u = i ? _t : ke(t), - l = s ? _t : ke(e); - (u = u == St ? kt : u), (l = l == St ? kt : l); - var c = u == kt, - f = l == kt, - p = u == l; - if (p && Ne(t)) { - if (!Ne(e)) return !1; - (i = !0), (c = !1); - } - if (p && !c) - return ( - a || (a = new P()), - i || Ae(t) ? V(t, e, n, r, o, a) : $(t, e, u, n, r, o, a) - ); - if (!(n & bt)) { - var d = c && ie.call(t, "__wrapped__"), - h = f && ie.call(e, "__wrapped__"); - if (d || h) { - var y = d ? t.value() : t, - g = h ? e.value() : e; - return a || (a = new P()), o(y, g, n, r, a); - } - } - return !!p && (a || (a = new P()), J(t, e, n, r, o, a)); - } - function Y(t) { - return !(!pt(t) || rt(t)) && (ct(t) ? le : Ut).test(it(t)); - } - function X(t) { - return dt(t) && ft(t.length) && !!Yt[B(t)]; - } - function F(t) { - if (!ot(t)) return ve(t); - var e = []; - for (var n in Object(t)) - ie.call(t, n) && "constructor" != n && e.push(n); - return e; - } - function V(t, e, n, r, o, i) { - var u = n & bt, - l = t.length, - c = e.length; - if (l != c && !(u && c > l)) return !1; - var f = i.get(t); - if (f && i.get(e)) return f == e; - var p = -1, - d = !0, - h = n & wt ? new T() : void 0; - for (i.set(t, e), i.set(e, t); ++p < l; ) { - var y = t[p], - g = e[p]; - if (r) var m = u ? r(g, y, p, e, t, i) : r(y, g, p, t, e, i); - if (void 0 !== m) { - if (m) continue; - d = !1; - break; - } - if (h) { - if ( - !a(e, function(t, e) { - if (!s(h, e) && (y === t || o(y, t, n, r, i))) - return h.push(e); - }) - ) { - d = !1; - break; - } - } else if (y !== g && !o(y, g, n, r, i)) { - d = !1; - break; - } - } - return i.delete(t), i.delete(e), d; - } - function $(t, e, n, r, o, a, i) { - switch (n) { - case Bt: - if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) - return !1; - (t = t.buffer), (e = e.buffer); - case It: - return !( - t.byteLength != e.byteLength || !a(new pe(t), new pe(e)) - ); - case Rt: - case Dt: - case zt: - return st(+t, +e); - case jt: - return t.name == e.name && t.message == e.message; - case Lt: - case At: - return t == e + ""; - case Ct: - var s = l; - case Nt: - var u = r & bt; - if ((s || (s = c), t.size != e.size && !u)) return !1; - var f = i.get(t); - if (f) return f == e; - (r |= wt), i.set(t, e); - var p = V(s(t), s(e), r, o, a, i); - return i.delete(t), p; - case Wt: - if (ze) return ze.call(t) == ze.call(e); - } - return !1; - } - function J(t, e, n, r, o, a) { - var i = n & bt, - s = K(t), - u = s.length; - if (u != K(e).length && !i) return !1; - for (var l = u; l--; ) { - var c = s[l]; - if (!(i ? c in e : ie.call(e, c))) return !1; - } - var f = a.get(t); - if (f && a.get(e)) return f == e; - var p = !0; - a.set(t, e), a.set(e, t); - for (var d = i; ++l < u; ) { - c = s[l]; - var h = t[c], - y = e[c]; - if (r) var g = i ? r(y, h, c, e, t, a) : r(h, y, c, t, e, a); - if (!(void 0 === g ? h === y || o(h, y, n, r, a) : g)) { - p = !1; - break; - } - d || (d = "constructor" == c); - } - if (p && !d) { - var m = t.constructor, - v = e.constructor; - m != v && - "constructor" in t && - "constructor" in e && - !( - "function" == typeof m && - m instanceof m && - "function" == typeof v && - v instanceof v - ) && - (p = !1); - } - return a.delete(t), a.delete(e), p; - } - function K(t) { - return I(t, ht, Pe); - } - function Q(t, e) { - var n = t.__data__; - return nt(e) ? n["string" == typeof e ? "string" : "hash"] : n.map; - } - function Z(t, e) { - var n = u(t, e); - return Y(n) ? n : void 0; - } - function tt(t) { - var e = ie.call(t, ye), - n = t[ye]; - try { - t[ye] = void 0; - var r = !0; - } catch (t) {} - var o = ue.call(t); - return r && (e ? (t[ye] = n) : delete t[ye]), o; - } - function et(t, e) { - return ( - !!(e = null == e ? xt : e) && - ("number" == typeof t || qt.test(t)) && - t > -1 && - t % 1 == 0 && - t < e - ); - } - function nt(t) { - var e = typeof t; - return "string" == e || - "number" == e || - "symbol" == e || - "boolean" == e - ? "__proto__" !== t - : null === t; - } - function rt(t) { - return !!se && se in t; - } - function ot(t) { - var e = t && t.constructor; - return t === (("function" == typeof e && e.prototype) || re); - } - function at(t) { - return ue.call(t); - } - function it(t) { - if (null != t) { - try { - return ae.call(t); - } catch (t) {} - try { - return t + ""; - } catch (t) {} - } - return ""; - } - function st(t, e) { - return t === e || (t !== t && e !== e); - } - function ut(t) { - return null != t && ft(t.length) && !ct(t); - } - function lt(t, e) { - return U(t, e); - } - function ct(t) { - if (!pt(t)) return !1; - var e = B(t); - return e == Et || e == Tt || e == Ot || e == Mt; - } - function ft(t) { - return "number" == typeof t && t > -1 && t % 1 == 0 && t <= xt; - } - function pt(t) { - var e = typeof t; - return null != t && ("object" == e || "function" == e); - } - function dt(t) { - return null != t && "object" == typeof t; - } - function ht(t) { - return ut(t) ? W(t) : F(t); - } - function yt() { - return []; - } - function gt() { - return !1; - } - var mt = 200, - vt = "__lodash_hash_undefined__", - bt = 1, - wt = 2, - xt = 9007199254740991, - St = "[object Arguments]", - _t = "[object Array]", - Ot = "[object AsyncFunction]", - Rt = "[object Boolean]", - Dt = "[object Date]", - jt = "[object Error]", - Et = "[object Function]", - Tt = "[object GeneratorFunction]", - Ct = "[object Map]", - zt = "[object Number]", - Pt = "[object Null]", - kt = "[object Object]", - Mt = "[object Proxy]", - Lt = "[object RegExp]", - Nt = "[object Set]", - At = "[object String]", - Wt = "[object Symbol]", - Ht = "[object Undefined]", - It = "[object ArrayBuffer]", - Bt = "[object DataView]", - Gt = /[\\^$.*+?()[\]{}|]/g, - Ut = /^\[object .+?Constructor\]$/, - qt = /^(?:0|[1-9]\d*)$/, - Yt = {}; - (Yt["[object Float32Array]"] = Yt["[object Float64Array]"] = Yt[ - "[object Int8Array]" - ] = Yt["[object Int16Array]"] = Yt["[object Int32Array]"] = Yt[ - "[object Uint8Array]" - ] = Yt["[object Uint8ClampedArray]"] = Yt["[object Uint16Array]"] = Yt[ - "[object Uint32Array]" - ] = !0), - (Yt[St] = Yt[_t] = Yt[It] = Yt[Rt] = Yt[Bt] = Yt[Dt] = Yt[jt] = Yt[ - Et - ] = Yt[Ct] = Yt[zt] = Yt[kt] = Yt[Lt] = Yt[Nt] = Yt[At] = Yt[ - "[object WeakMap]" - ] = !1); - var Xt = "object" == typeof t && t && t.Object === Object && t, - Ft = - "object" == typeof self && self && self.Object === Object && self, - Vt = Xt || Ft || Function("return this")(), - $t = "object" == typeof e && e && !e.nodeType && e, - Jt = $t && "object" == typeof n && n && !n.nodeType && n, - Kt = Jt && Jt.exports === $t, - Qt = Kt && Xt.process, - Zt = (function() { - try { - return Qt && Qt.binding && Qt.binding("util"); - } catch (t) {} - })(), - te = Zt && Zt.isTypedArray, - ee = Array.prototype, - ne = Function.prototype, - re = Object.prototype, - oe = Vt["__core-js_shared__"], - ae = ne.toString, - ie = re.hasOwnProperty, - se = (function() { - var t = /[^.]+$/.exec((oe && oe.keys && oe.keys.IE_PROTO) || ""); - return t ? "Symbol(src)_1." + t : ""; - })(), - ue = re.toString, - le = RegExp( - "^" + - ae - .call(ie) - .replace(Gt, "\\$&") - .replace( - /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, - "$1.*?" - ) + - "$" - ), - ce = Kt ? Vt.Buffer : void 0, - fe = Vt.Symbol, - pe = Vt.Uint8Array, - de = re.propertyIsEnumerable, - he = ee.splice, - ye = fe ? fe.toStringTag : void 0, - ge = Object.getOwnPropertySymbols, - me = ce ? ce.isBuffer : void 0, - ve = (function(t, e) { - return function(n) { - return t(e(n)); - }; - })(Object.keys, Object), - be = Z(Vt, "DataView"), - we = Z(Vt, "Map"), - xe = Z(Vt, "Promise"), - Se = Z(Vt, "Set"), - _e = Z(Vt, "WeakMap"), - Oe = Z(Object, "create"), - Re = it(be), - De = it(we), - je = it(xe), - Ee = it(Se), - Te = it(_e), - Ce = fe ? fe.prototype : void 0, - ze = Ce ? Ce.valueOf : void 0; - (f.prototype.clear = p), - (f.prototype.delete = d), - (f.prototype.get = h), - (f.prototype.has = y), - (f.prototype.set = g), - (m.prototype.clear = v), - (m.prototype.delete = b), - (m.prototype.get = w), - (m.prototype.has = x), - (m.prototype.set = S), - (_.prototype.clear = O), - (_.prototype.delete = R), - (_.prototype.get = D), - (_.prototype.has = j), - (_.prototype.set = E), - (T.prototype.add = T.prototype.push = C), - (T.prototype.has = z), - (P.prototype.clear = k), - (P.prototype.delete = M), - (P.prototype.get = L), - (P.prototype.has = N), - (P.prototype.set = A); - var Pe = ge - ? function(t) { - return null == t - ? [] - : ((t = Object(t)), - r(ge(t), function(e) { - return de.call(t, e); - })); - } - : yt, - ke = B; - ((be && ke(new be(new ArrayBuffer(1))) != Bt) || - (we && ke(new we()) != Ct) || - (xe && "[object Promise]" != ke(xe.resolve())) || - (Se && ke(new Se()) != Nt) || - (_e && "[object WeakMap]" != ke(new _e()))) && - (ke = function(t) { - var e = B(t), - n = e == kt ? t.constructor : void 0, - r = n ? it(n) : ""; - if (r) - switch (r) { - case Re: - return Bt; - case De: - return Ct; - case je: - return "[object Promise]"; - case Ee: - return Nt; - case Te: - return "[object WeakMap]"; - } - return e; - }); - var Me = G( - (function() { - return arguments; - })() - ) - ? G - : function(t) { - return dt(t) && ie.call(t, "callee") && !de.call(t, "callee"); - }, - Le = Array.isArray, - Ne = me || gt, - Ae = te - ? (function(t) { - return function(e) { - return t(e); - }; - })(te) - : X; - n.exports = lt; - }.call(e, n(15), n(16)(t))); - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function a(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function i(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - e.__esModule = !0; - var s = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - u = n(0), - l = r(u), - c = n(1), - f = r(c), - p = n(3), - d = r(p), - h = n(5), - y = r(h), - g = n(2), - m = n(17), - v = r(m), - b = (function(t) { - function e(n, r) { - o(this, e); - var i = a(this, t.call(this, n, r)); - return ( - w.call(i), - (0, g.autoBindHandlers)(i, [ - "onDragStart", - "onDrag", - "onDragStop", - "onResizeStart", - "onResize", - "onResizeStop" - ]), - i - ); - } - return ( - i(e, t), - (e.prototype.componentDidMount = function() { - this.setState({ mounted: !0 }), - this.onLayoutMaybeChanged(this.state.layout, this.props.layout); - }), - (e.prototype.componentWillReceiveProps = function(t) { - var e = void 0; - if ( - ((0, d.default)(t.layout, this.props.layout) && - t.compactType === this.props.compactType - ? (0, g.childrenEqual)(this.props.children, t.children) || - (e = this.state.layout) - : (e = t.layout), - e) - ) { - var n = (0, g.synchronizeLayoutWithChildren)( - e, - t.children, - t.cols, - this.compactType(t) - ), - r = this.state.layout; - this.setState({ layout: n }), this.onLayoutMaybeChanged(n, r); - } - }), - (e.prototype.containerHeight = function() { - if (this.props.autoSize) { - var t = (0, g.bottom)(this.state.layout), - e = this.props.containerPadding - ? this.props.containerPadding[1] - : this.props.margin[1]; - return ( - t * this.props.rowHeight + - (t - 1) * this.props.margin[1] + - 2 * e + - "px" - ); - } - }), - (e.prototype.compactType = function(t) { - return ( - t || (t = this.props), - !1 === t.verticalCompact ? null : t.compactType - ); - }), - (e.prototype.onDragStart = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state.layout, - s = (0, g.getLayoutItem)(i, t); - if (s) - return ( - this.setState({ - oldDragItem: (0, g.cloneLayoutItem)(s), - oldLayout: this.state.layout - }), - this.props.onDragStart(i, s, s, null, o, a) - ); - }), - (e.prototype.onDrag = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state.oldDragItem, - s = this.state.layout, - u = this.props.cols, - l = (0, g.getLayoutItem)(s, t); - if (l) { - var c = { - w: l.w, - h: l.h, - x: l.x, - y: l.y, - placeholder: !0, - i: t - }; - (s = (0, g.moveElement)( - s, - l, - e, - n, - !0, - this.props.preventCollision, - this.compactType(), - u - )), - this.props.onDrag(s, i, l, c, o, a), - this.setState({ - layout: (0, g.compact)(s, this.compactType(), u), - activeDrag: c - }); - } - }), - (e.prototype.onDragStop = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state.oldDragItem, - s = this.state.layout, - u = this.props, - l = u.cols, - c = u.preventCollision, - f = (0, g.getLayoutItem)(s, t); - if (f) { - (s = (0, g.moveElement)( - s, - f, - e, - n, - !0, - c, - this.compactType(), - l - )), - this.props.onDragStop(s, i, f, null, o, a); - var p = (0, g.compact)(s, this.compactType(), l), - d = this.state.oldLayout; - this.setState({ - activeDrag: null, - layout: p, - oldDragItem: null, - oldLayout: null - }), - this.onLayoutMaybeChanged(p, d); - } - }), - (e.prototype.onLayoutMaybeChanged = function(t, e) { - e || (e = this.state.layout), - (0, d.default)(e, t) || this.props.onLayoutChange(t); - }), - (e.prototype.onResizeStart = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state.layout, - s = (0, g.getLayoutItem)(i, t); - s && - (this.setState({ - oldResizeItem: (0, g.cloneLayoutItem)(s), - oldLayout: this.state.layout - }), - this.props.onResizeStart(i, s, s, null, o, a)); - }), - (e.prototype.onResize = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state, - u = i.layout, - l = i.oldResizeItem, - c = this.props, - f = c.cols, - p = c.preventCollision, - d = (0, g.getLayoutItem)(u, t); - if (d) { - var h = void 0; - if (p) { - var y = (0, g.getAllCollisions)( - u, - s({}, d, { w: e, h: n }) - ).filter(function(t) { - return t.i !== d.i; - }); - if ((h = y.length > 0)) { - var m = 1 / 0, - v = 1 / 0; - y.forEach(function(t) { - t.x > d.x && (m = Math.min(m, t.x)), - t.y > d.y && (v = Math.min(v, t.y)); - }), - Number.isFinite(m) && (d.w = m - d.x), - Number.isFinite(v) && (d.h = v - d.y); - } - } - h || ((d.w = e), (d.h = n)); - var b = { w: d.w, h: d.h, x: d.x, y: d.y, static: !0, i: t }; - this.props.onResize(u, l, d, b, o, a), - this.setState({ - layout: (0, g.compact)(u, this.compactType(), f), - activeDrag: b - }); - } - }), - (e.prototype.onResizeStop = function(t, e, n, r) { - var o = r.e, - a = r.node, - i = this.state, - s = i.layout, - u = i.oldResizeItem, - l = this.props.cols, - c = (0, g.getLayoutItem)(s, t); - this.props.onResizeStop(s, u, c, null, o, a); - var f = (0, g.compact)(s, this.compactType(), l), - p = this.state.oldLayout; - this.setState({ - activeDrag: null, - layout: f, - oldResizeItem: null, - oldLayout: null - }), - this.onLayoutMaybeChanged(f, p); - }), - (e.prototype.placeholder = function() { - var t = this.state.activeDrag; - if (!t) return null; - var e = this.props, - n = e.width, - r = e.cols, - o = e.margin, - a = e.containerPadding, - i = e.rowHeight, - s = e.maxRows, - u = e.useCSSTransforms; - return l.default.createElement( - v.default, - { - w: t.w, - h: t.h, - x: t.x, - y: t.y, - i: t.i, - className: "react-grid-placeholder", - containerWidth: n, - cols: r, - margin: o, - containerPadding: a || o, - maxRows: s, - rowHeight: i, - isDraggable: !1, - isResizable: !1, - useCSSTransforms: u - }, - l.default.createElement("div", null) - ); - }), - (e.prototype.processGridItem = function(t) { - if (t && t.key) { - var e = (0, g.getLayoutItem)(this.state.layout, String(t.key)); - if (!e) return null; - var n = this.props, - r = n.width, - o = n.cols, - a = n.margin, - i = n.containerPadding, - s = n.rowHeight, - u = n.maxRows, - c = n.isDraggable, - f = n.isResizable, - p = n.useCSSTransforms, - d = n.draggableCancel, - h = n.draggableHandle, - y = this.state.mounted, - m = Boolean( - !e.static && c && (e.isDraggable || null == e.isDraggable) - ), - b = Boolean( - !e.static && f && (e.isResizable || null == e.isResizable) - ); - return l.default.createElement( - v.default, - { - containerWidth: r, - cols: o, - margin: a, - containerPadding: i || a, - maxRows: u, - rowHeight: s, - cancel: d, - handle: h, - onDragStop: this.onDragStop, - onDragStart: this.onDragStart, - onDrag: this.onDrag, - onResizeStart: this.onResizeStart, - onResize: this.onResize, - onResizeStop: this.onResizeStop, - isDraggable: m, - isResizable: b, - useCSSTransforms: p && y, - usePercentages: !y, - w: e.w, - h: e.h, - x: e.x, - y: e.y, - i: e.i, - minH: e.minH, - minW: e.minW, - maxH: e.maxH, - maxW: e.maxW, - static: e.static - }, - t - ); - } - }), - (e.prototype.render = function() { - var t = this, - e = this.props, - n = e.className, - r = e.style, - o = (0, y.default)("react-grid-layout", n), - a = s({ height: this.containerHeight() }, r); - return l.default.createElement( - "div", - { className: o, style: a }, - l.default.Children.map(this.props.children, function(e) { - return t.processGridItem(e); - }), - this.placeholder() - ); - }), - e - ); - })(l.default.Component); - (b.displayName = "ReactGridLayout"), - (b.propTypes = { - className: f.default.string, - style: f.default.object, - width: f.default.number, - autoSize: f.default.bool, - cols: f.default.number, - draggableCancel: f.default.string, - draggableHandle: f.default.string, - verticalCompact: function(t) { - t.verticalCompact, 1; - }, - compactType: f.default.oneOf(["vertical", "horizontal"]), - layout: function(t) { - var e = t.layout; - void 0 !== e && (0, g.validateLayout)(e, "layout"); - }, - margin: f.default.arrayOf(f.default.number), - containerPadding: f.default.arrayOf(f.default.number), - rowHeight: f.default.number, - maxRows: f.default.number, - isDraggable: f.default.bool, - isResizable: f.default.bool, - preventCollision: f.default.bool, - useCSSTransforms: f.default.bool, - onLayoutChange: f.default.func, - onDragStart: f.default.func, - onDrag: f.default.func, - onDragStop: f.default.func, - onResizeStart: f.default.func, - onResize: f.default.func, - onResizeStop: f.default.func, - children: function(t, e) { - var n = t[e], - r = {}; - l.default.Children.forEach(n, function(t) { - if (r[t.key]) - throw new Error( - 'Duplicate child key "' + - t.key + - '" found! This will cause problems in ReactGridLayout.' - ); - r[t.key] = !0; - }); - } - }), - (b.defaultProps = { - autoSize: !0, - cols: 12, - className: "", - style: {}, - draggableHandle: "", - draggableCancel: "", - containerPadding: null, - rowHeight: 150, - maxRows: 1 / 0, - layout: [], - margin: [10, 10], - isDraggable: !0, - isResizable: !0, - useCSSTransforms: !0, - verticalCompact: !0, - compactType: "vertical", - preventCollision: !1, - onLayoutChange: g.noop, - onDragStart: g.noop, - onDrag: g.noop, - onDragStop: g.noop, - onResizeStart: g.noop, - onResize: g.noop, - onResizeStop: g.noop - }); - var w = function() { - this.state = { - activeDrag: null, - layout: (0, g.synchronizeLayoutWithChildren)( - this.props.layout, - this.props.children, - this.props.cols, - this.compactType() - ), - mounted: !1, - oldDragItem: null, - oldLayout: null, - oldResizeItem: null - }; - }; - e.default = b; - }, - function(t, e, n) { - var r, - o; /*! - Copyright (c) 2016 Jed Watson. +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],e):"object"==typeof exports?exports.ReactGridLayout=e(require("react"),require("react-dom")):t.ReactGridLayout=e(t.React,t.ReactDOM)}(window,(function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=11)}([function(t,e,n){t.exports=n(12)()},function(t,e,n){"use strict";n.r(e),n.d(e,"bottom",(function(){return p})),n.d(e,"cloneLayout",(function(){return f})),n.d(e,"cloneLayoutItem",(function(){return d})),n.d(e,"childrenEqual",(function(){return h})),n.d(e,"collides",(function(){return y})),n.d(e,"compact",(function(){return g})),n.d(e,"compactItem",(function(){return v})),n.d(e,"correctBounds",(function(){return O})),n.d(e,"getLayoutItem",(function(){return w})),n.d(e,"getFirstCollision",(function(){return j})),n.d(e,"getAllCollisions",(function(){return S})),n.d(e,"getStatics",(function(){return x})),n.d(e,"moveElement",(function(){return D})),n.d(e,"moveElementAwayFromCollision",(function(){return P})),n.d(e,"perc",(function(){return _})),n.d(e,"setTransform",(function(){return R})),n.d(e,"setTopLeft",(function(){return k})),n.d(e,"sortLayoutItems",(function(){return z})),n.d(e,"sortLayoutItemsByRowCol",(function(){return C})),n.d(e,"sortLayoutItemsByColRow",(function(){return E})),n.d(e,"synchronizeLayoutWithChildren",(function(){return T})),n.d(e,"validateLayout",(function(){return M})),n.d(e,"autoBindHandlers",(function(){return L})),n.d(e,"noop",(function(){return W}));var r=n(3),o=n.n(r),a=n(2),i=n.n(a);function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var u=!0,l=!1;function p(t){for(var e,n=0,r=0,o=t.length;rn&&(n=e);return n}function f(t){for(var e=Array(t.length),n=0,r=t.length;n=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function g(t,e,n){for(var r=x(t),o=z(t,e),a=Array(t.length),i=0,s=o.length;ie.y+e.h)break;y(e,i)&&m(t,i,n+e[o],r)}}e[r]=n}function v(t,e,n,r,o){var a,i="horizontal"===n;if("vertical"===n)for(e.y=Math.min(p(t),e.y);e.y>0&&!j(t,e);)e.y--;else if(i)for(e.y=Math.min(p(t),e.y);e.x>0&&!j(t,e);)e.x--;for(;a=j(t,e);)i?m(o,e,a.x+a.w,"x"):m(o,e,a.y+a.h,"y"),i&&e.x+e.w>r&&(e.x=r-e.w,e.y++);return e}function O(t,e){for(var n=x(t),r=0,o=t.length;re.cols&&(a.x=e.cols-a.w),a.x<0&&(a.x=0,a.w=e.cols),a.static)for(;j(n,a);)a.y++;else n.push(a)}return t}function w(t,e){for(var n=0,r=t.length;n=r:"horizontal"===i&&"number"==typeof n&&c>=n)&&(l=l.reverse());var p=S(l,e);if(a&&p.length)return N("Collision prevented on ".concat(e.i,", reverting.")),e.x=c,e.y=u,e.moved=!1,t;for(var f=0,d=p.length;fe.y||t.y===e.y&&t.x>e.x?1:t.y===e.y&&t.x===e.x?0:-1}))}function E(t){return[].concat(t).sort((function(t,e){return t.x>e.x||t.x===e.x&&t.y>e.y?1:-1}))}function T(t,e,n,r){t=t||[];var o=[];return i.a.Children.forEach(e,(function(e,n){var r=w(t,String(e.key));if(r)o[n]=d(r);else{!u&&e.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var a=e.props["data-grid"]||e.props._grid;a?(u||M([a],"ReactGridLayout.children"),o[n]=d(function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var r=0,o=t.length;ru))return!1;var p=s.get(t);if(p&&s.get(e))return p==e;var f=-1,d=!0,h=n&i?new Pt:void 0;for(s.set(t,e),s.set(e,t);++f-1},xt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Dt.prototype.clear=function(){this.size=0,this.__data__={hash:new St,map:new(pt||xt),string:new St}},Dt.prototype.delete=function(t){var e=Wt(this,t).delete(t);return this.size-=e?1:0,e},Dt.prototype.get=function(t){return Wt(this,t).get(t)},Dt.prototype.has=function(t){return Wt(this,t).has(t)},Dt.prototype.set=function(t,e){var n=Wt(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Pt.prototype.add=Pt.prototype.push=function(t){return this.__data__.set(t,o),this},Pt.prototype.has=function(t){return this.__data__.has(t)},_t.prototype.clear=function(){this.__data__=new xt,this.size=0},_t.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},_t.prototype.get=function(t){return this.__data__.get(t)},_t.prototype.has=function(t){return this.__data__.has(t)},_t.prototype.set=function(t,e){var n=this.__data__;if(n instanceof xt){var o=n.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=s}function $t(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Jt(t){return null!=t&&"object"==typeof t}var Kt=A?function(t){return function(e){return t(e)}}(A):function(t){return Jt(t)&&Vt(t.length)&&!!z[zt(t)]};function Qt(t){return null!=(e=t)&&Vt(e.length)&&!Gt(e)?Rt(t):Mt(t);var e}n.exports=function(t,e){return Et(t,e)}}).call(this,n(14),n(15)(t))},function(t,e,n){"use strict";n.r(e),n.d(e,"getBreakpointFromWidth",(function(){return o})),n.d(e,"getColsFromBreakpoint",(function(){return a})),n.d(e,"findOrGenerateResponsiveLayout",(function(){return i})),n.d(e,"sortBreakpoints",(function(){return s}));var r=n(1);function o(t,e){for(var n=s(t),r=n[0],o=1,a=n.length;ot[i]&&(r=i)}return r}function a(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function i(t,e,n,o,a,i){if(t[n])return Object(r.cloneLayout)(t[n]);for(var c=t[o],u=s(e),l=u.slice(u.indexOf(n)),p=0,f=l.length;p 0 && void 0 !== arguments[0] - ? arguments[0] - : {}; - return S({ touchAction: "none" }, t); - } - function w(t, e) { - t.classList - ? t.classList.add(e) - : t.className.match(new RegExp("(?:^|\\s)" + e + "(?!\\S)")) || - (t.className += " " + e); - } - function x(t, e) { - t.classList - ? t.classList.remove(e) - : (t.className = t.className.replace( - new RegExp("(?:^|\\s)" + e + "(?!\\S)", "g"), - "" - )); - } - Object.defineProperty(e, "__esModule", { value: !0 }); - var S = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }; - (e.matchesSelector = o), - (e.matchesSelectorAndParentsTo = a), - (e.addEvent = i), - (e.removeEvent = s), - (e.outerHeight = u), - (e.outerWidth = l), - (e.innerHeight = c), - (e.innerWidth = f), - (e.offsetXYFromParent = p), - (e.createCSSTransform = d), - (e.createSVGTransform = h), - (e.getTouch = y), - (e.getTouchIdentifier = g), - (e.addUserSelectStyles = m), - (e.removeUserSelectStyles = v), - (e.styleHacks = b), - (e.addClassName = w), - (e.removeClassName = x); - var _ = n(0), - O = n(19), - R = (function(t) { - return t && t.__esModule ? t : { default: t }; - })(O), - D = ""; - }, - function(t, n) { - t.exports = e; - }, - function(t, e, n) { - if ("production" !== Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV) { - var r = - ("function" == typeof Symbol && - Symbol.for && - Symbol.for("react.element")) || - 60103, - o = function(t) { - return "object" == typeof t && null !== t && t.$$typeof === r; - }; - t.exports = n(14)(o, !0); - } else t.exports = n(17)(); - }, - function(t, e, n) { - "use strict"; - var r = n(1), - o = r; - if ("production" !== Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV) { - var a = function(t) { - for ( - var e = arguments.length, n = Array(e > 1 ? e - 1 : 0), r = 1; - r < e; - r++ - ) - n[r - 1] = arguments[r]; - var o = 0, - a = - "Warning: " + - t.replace(/%s/g, function() { - return n[o++]; - }); - "undefined" != typeof console && console.error(a); - try { - throw new Error(a); - } catch (t) {} - }; - o = function(t, e) { - if (void 0 === e) - throw new Error( - "`warning(condition, format, ...args)` requires a warning message argument" - ); - if (0 !== e.indexOf("Failed Composite propType: ") && !t) { - for ( - var n = arguments.length, - r = Array(n > 2 ? n - 2 : 0), - o = 2; - o < n; - o++ - ) - r[o - 2] = arguments[o]; - a.apply(void 0, [e].concat(r)); - } - }; - } - t.exports = o; - }, - function(t, e, n) { - "use strict"; - function r(t, e, n) { - if (!t.props.bounds) return [e, n]; - var r = t.props.bounds; - r = "string" == typeof r ? r : c(r); - var o = f(t); - if ("string" == typeof r) { - var a = o.ownerDocument, - i = a.defaultView, - s = void 0; - if ( - !( - (s = - "parent" === r - ? o.parentNode - : a.querySelector(r)) instanceof HTMLElement - ) - ) - throw new Error( - 'Bounds selector "' + r + '" could not find an element.' - ); - var u = i.getComputedStyle(o), - l = i.getComputedStyle(s); - r = { - left: - -o.offsetLeft + - (0, p.int)(l.paddingLeft) + - (0, p.int)(u.marginLeft), - top: - -o.offsetTop + - (0, p.int)(l.paddingTop) + - (0, p.int)(u.marginTop), - right: - (0, y.innerWidth)(s) - - (0, y.outerWidth)(o) - - o.offsetLeft + - (0, p.int)(l.paddingRight) - - (0, p.int)(u.marginRight), - bottom: - (0, y.innerHeight)(s) - - (0, y.outerHeight)(o) - - o.offsetTop + - (0, p.int)(l.paddingBottom) - - (0, p.int)(u.marginBottom) - }; - } - return ( - (0, p.isNum)(r.right) && (e = Math.min(e, r.right)), - (0, p.isNum)(r.bottom) && (n = Math.min(n, r.bottom)), - (0, p.isNum)(r.left) && (e = Math.max(e, r.left)), - (0, p.isNum)(r.top) && (n = Math.max(n, r.top)), - [e, n] - ); - } - function o(t, e, n) { - return [Math.round(e / t[0]) * t[0], Math.round(n / t[1]) * t[1]]; - } - function a(t) { - return "both" === t.props.axis || "x" === t.props.axis; - } - function i(t) { - return "both" === t.props.axis || "y" === t.props.axis; - } - function s(t, e, n) { - var r = "number" == typeof e ? (0, y.getTouch)(t, e) : null; - if ("number" == typeof e && !r) return null; - var o = f(n), - a = - n.props.offsetParent || - o.offsetParent || - o.ownerDocument.body; - return (0, y.offsetXYFromParent)(r || t, a); - } - function u(t, e, n) { - var r = t.state, - o = !(0, p.isNum)(r.lastX), - a = f(t); - return o - ? { - node: a, - deltaX: 0, - deltaY: 0, - lastX: e, - lastY: n, - x: e, - y: n - } - : { - node: a, - deltaX: e - r.lastX, - deltaY: n - r.lastY, - lastX: r.lastX, - lastY: r.lastY, - x: e, - y: n - }; - } - function l(t, e) { - return { - node: e.node, - x: t.state.x + e.deltaX, - y: t.state.y + e.deltaY, - deltaX: e.deltaX, - deltaY: e.deltaY, - lastX: t.state.x, - lastY: t.state.y - }; - } - function c(t) { - return { - left: t.left, - top: t.top, - right: t.right, - bottom: t.bottom - }; - } - function f(t) { - var e = h.default.findDOMNode(t); - if (!e) - throw new Error(": Unmounted during event!"); - return e; - } - Object.defineProperty(e, "__esModule", { value: !0 }), - (e.getBoundPosition = r), - (e.snapToGrid = o), - (e.canDragX = a), - (e.canDragY = i), - (e.getControlPosition = s), - (e.createCoreData = u), - (e.createDraggableData = l); - var p = n(0), - d = n(4), - h = (function(t) { - return t && t.__esModule ? t : { default: t }; - })(d), - y = n(5); - }, - function(t, e, n) { - "use strict"; - (function(t) { - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function a(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) - ? t - : e; - } - function i(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - Object.defineProperty(e, "__esModule", { value: !0 }); - var s = (function() { - function t(t, e) { - var n = [], - r = !0, - o = !1, - a = void 0; - try { - for ( - var i, s = t[Symbol.iterator](); - !(r = (i = s.next()).done) && - (n.push(i.value), !e || n.length !== e); - r = !0 - ); - } catch (t) { - (o = !0), (a = t); - } finally { - try { - !r && s.return && s.return(); - } finally { - if (o) throw a; - } - } - return n; - } - return function(e, n) { - if (Array.isArray(e)) return e; - if (Symbol.iterator in Object(e)) return t(e, n); - throw new TypeError( - "Invalid attempt to destructure non-iterable instance" - ); - }; - })(), - u = (function() { - function t(t, e) { - for (var n = 0; n < e.length; n++) { - var r = e[n]; - (r.enumerable = r.enumerable || !1), - (r.configurable = !0), - "value" in r && (r.writable = !0), - Object.defineProperty(t, r.key, r); - } - } - return function(e, n, r) { - return n && t(e.prototype, n), r && t(e, r), e; - }; - })(), - l = n(6), - c = r(l), - f = n(7), - p = r(f), - d = n(4), - h = r(d), - y = n(5), - g = n(9), - m = n(0), - v = n(11), - b = r(v), - w = { - touch: { - start: "touchstart", - move: "touchmove", - stop: "touchend" - }, - mouse: { - start: "mousedown", - move: "mousemove", - stop: "mouseup" - } - }, - x = w.mouse, - S = (function(t) { - function e() { - var t, n, r, i; - o(this, e); - for ( - var u = arguments.length, l = Array(u), c = 0; - c < u; - c++ - ) - l[c] = arguments[c]; - return ( - (n = r = a( - this, - (t = - e.__proto__ || Object.getPrototypeOf(e)).call.apply( - t, - [this].concat(l) - ) - )), - (r.state = { - dragging: !1, - lastX: NaN, - lastY: NaN, - touchIdentifier: null - }), - (r.handleDragStart = function(t) { - if ( - (r.props.onMouseDown(t), - !r.props.allowAnyClick && - "number" == typeof t.button && - 0 !== t.button) - ) - return !1; - var e = h.default.findDOMNode(r); - if (!e || !e.ownerDocument || !e.ownerDocument.body) - throw new Error( - " not mounted on DragStart!" - ); - var n = e.ownerDocument; - if ( - !( - r.props.disabled || - !(t.target instanceof n.defaultView.Node) || - (r.props.handle && - !(0, y.matchesSelectorAndParentsTo)( - t.target, - r.props.handle, - e - )) || - (r.props.cancel && - (0, y.matchesSelectorAndParentsTo)( - t.target, - r.props.cancel, - e - )) - ) - ) { - var o = (0, y.getTouchIdentifier)(t); - r.setState({ touchIdentifier: o }); - var a = (0, g.getControlPosition)(t, o, r); - if (null != a) { - var i = a.x, - s = a.y, - u = (0, g.createCoreData)(r, i, s); - (0, b.default)( - "DraggableCore: handleDragStart: %j", - u - ), - (0, b.default)("calling", r.props.onStart); - !1 !== r.props.onStart(t, u) && - (r.props.enableUserSelectHack && - (0, y.addUserSelectStyles)(n), - r.setState({ dragging: !0, lastX: i, lastY: s }), - (0, y.addEvent)(n, x.move, r.handleDrag), - (0, y.addEvent)(n, x.stop, r.handleDragStop)); - } - } - }), - (r.handleDrag = function(t) { - "touchmove" === t.type && t.preventDefault(); - var e = (0, g.getControlPosition)( - t, - r.state.touchIdentifier, - r - ); - if (null != e) { - var n = e.x, - o = e.y; - if (Array.isArray(r.props.grid)) { - var a = n - r.state.lastX, - i = o - r.state.lastY, - u = (0, g.snapToGrid)(r.props.grid, a, i), - l = s(u, 2); - if (((a = l[0]), (i = l[1]), !a && !i)) return; - (n = r.state.lastX + a), (o = r.state.lastY + i); - } - var c = (0, g.createCoreData)(r, n, o); - (0, b.default)("DraggableCore: handleDrag: %j", c); - if (!1 !== r.props.onDrag(t, c)) - r.setState({ lastX: n, lastY: o }); - else - try { - r.handleDragStop(new MouseEvent("mouseup")); - } catch (t) { - var f = document.createEvent("MouseEvents"); - f.initMouseEvent( - "mouseup", - !0, - !0, - window, - 0, - 0, - 0, - 0, - 0, - !1, - !1, - !1, - !1, - 0, - null - ), - r.handleDragStop(f); - } - } - }), - (r.handleDragStop = function(t) { - if (r.state.dragging) { - var e = (0, g.getControlPosition)( - t, - r.state.touchIdentifier, - r - ); - if (null != e) { - var n = e.x, - o = e.y, - a = (0, g.createCoreData)(r, n, o), - i = h.default.findDOMNode(r); - i && - r.props.enableUserSelectHack && - (0, y.removeUserSelectStyles)(i.ownerDocument), - (0, b.default)( - "DraggableCore: handleDragStop: %j", - a - ), - r.setState({ - dragging: !1, - lastX: NaN, - lastY: NaN - }), - r.props.onStop(t, a), - i && - ((0, b.default)( - "DraggableCore: Removing handlers" - ), - (0, y.removeEvent)( - i.ownerDocument, - x.move, - r.handleDrag - ), - (0, y.removeEvent)( - i.ownerDocument, - x.stop, - r.handleDragStop - )); - } - } - }), - (r.onMouseDown = function(t) { - return (x = w.mouse), r.handleDragStart(t); - }), - (r.onMouseUp = function(t) { - return (x = w.mouse), r.handleDragStop(t); - }), - (r.onTouchStart = function(t) { - return (x = w.touch), r.handleDragStart(t); - }), - (r.onTouchEnd = function(t) { - return (x = w.touch), r.handleDragStop(t); - }), - (i = n), - a(r, i) - ); - } - return ( - i(e, t), - u(e, [ - { - key: "componentWillUnmount", - value: function() { - var t = h.default.findDOMNode(this); - if (t) { - var e = t.ownerDocument; - (0, y.removeEvent)( - e, - w.mouse.move, - this.handleDrag - ), - (0, y.removeEvent)( - e, - w.touch.move, - this.handleDrag - ), - (0, y.removeEvent)( - e, - w.mouse.stop, - this.handleDragStop - ), - (0, y.removeEvent)( - e, - w.touch.stop, - this.handleDragStop - ), - this.props.enableUserSelectHack && - (0, y.removeUserSelectStyles)(e); - } - } - }, - { - key: "render", - value: function() { - return c.default.cloneElement( - c.default.Children.only(this.props.children), - { - style: (0, y.styleHacks)( - this.props.children.props.style - ), - onMouseDown: this.onMouseDown, - onTouchStart: this.onTouchStart, - onMouseUp: this.onMouseUp, - onTouchEnd: this.onTouchEnd - } - ); - } - } - ]), - e - ); - })(c.default.Component); - (S.displayName = "DraggableCore"), - (S.propTypes = { - allowAnyClick: p.default.bool, - disabled: p.default.bool, - enableUserSelectHack: p.default.bool, - offsetParent: function(e, n) { - if (!0 === t.browser && e[n] && 1 !== e[n].nodeType) - throw new Error( - "Draggable's offsetParent must be a DOM Node." - ); - }, - grid: p.default.arrayOf(p.default.number), - handle: p.default.string, - cancel: p.default.string, - onStart: p.default.func, - onDrag: p.default.func, - onStop: p.default.func, - onMouseDown: p.default.func, - className: m.dontSetMe, - style: m.dontSetMe, - transform: m.dontSetMe - }), - (S.defaultProps = { - allowAnyClick: !1, - cancel: null, - disabled: !1, - enableUserSelectHack: !0, - offsetParent: null, - handle: null, - grid: null, - transform: null, - onStart: function() {}, - onDrag: function() {}, - onStop: function() {}, - onMouseDown: function() {} - }), - (e.default = S); - }.call(e, n(20))); - }, - function(t, e, n) { - "use strict"; - function r() {} - Object.defineProperty(e, "__esModule", { value: !0 }), - (e.default = r); - }, - function(t, e, n) { - "use strict"; - var r = n(13).default; - (t.exports = r), - (t.exports.default = r), - (t.exports.DraggableCore = n(10).default); - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e, n) { - return ( - e in t - ? Object.defineProperty(t, e, { - value: n, - enumerable: !0, - configurable: !0, - writable: !0 - }) - : (t[e] = n), - t - ); - } - function a(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function i(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) - ? t - : e; - } - function s(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - Object.defineProperty(e, "__esModule", { value: !0 }); - var u = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && - (t[r] = n[r]); - } - return t; - }, - l = (function() { - function t(t, e) { - var n = [], - r = !0, - o = !1, - a = void 0; - try { - for ( - var i, s = t[Symbol.iterator](); - !(r = (i = s.next()).done) && - (n.push(i.value), !e || n.length !== e); - r = !0 - ); - } catch (t) { - (o = !0), (a = t); - } finally { - try { - !r && s.return && s.return(); - } finally { - if (o) throw a; - } - } - return n; - } - return function(e, n) { - if (Array.isArray(e)) return e; - if (Symbol.iterator in Object(e)) return t(e, n); - throw new TypeError( - "Invalid attempt to destructure non-iterable instance" - ); - }; - })(), - c = (function() { - function t(t, e) { - for (var n = 0; n < e.length; n++) { - var r = e[n]; - (r.enumerable = r.enumerable || !1), - (r.configurable = !0), - "value" in r && (r.writable = !0), - Object.defineProperty(t, r.key, r); - } - } - return function(e, n, r) { - return n && t(e.prototype, n), r && t(e, r), e; - }; - })(), - f = n(6), - p = r(f), - d = n(7), - h = r(d), - y = n(4), - g = r(y), - m = n(18), - v = r(m), - b = n(5), - w = n(9), - x = n(0), - S = n(10), - _ = r(S), - O = n(11), - R = r(O), - D = (function(t) { - function e(t) { - a(this, e); - var n = i( - this, - (e.__proto__ || Object.getPrototypeOf(e)).call(this, t) - ); - return ( - (n.onDragStart = function(t, e) { - if ( - ((0, R.default)("Draggable: onDragStart: %j", e), - !1 === - n.props.onStart(t, (0, w.createDraggableData)(n, e))) - ) - return !1; - n.setState({ dragging: !0, dragged: !0 }); - }), - (n.onDrag = function(t, e) { - if (!n.state.dragging) return !1; - (0, R.default)("Draggable: onDrag: %j", e); - var r = (0, w.createDraggableData)(n, e), - o = { x: r.x, y: r.y }; - if (n.props.bounds) { - var a = o.x, - i = o.y; - (o.x += n.state.slackX), (o.y += n.state.slackY); - var s = (0, w.getBoundPosition)(n, o.x, o.y), - u = l(s, 2), - c = u[0], - f = u[1]; - (o.x = c), - (o.y = f), - (o.slackX = n.state.slackX + (a - o.x)), - (o.slackY = n.state.slackY + (i - o.y)), - (r.x = o.x), - (r.y = o.y), - (r.deltaX = o.x - n.state.x), - (r.deltaY = o.y - n.state.y); - } - if (!1 === n.props.onDrag(t, r)) return !1; - n.setState(o); - }), - (n.onDragStop = function(t, e) { - if (!n.state.dragging) return !1; - if ( - !1 === - n.props.onStop(t, (0, w.createDraggableData)(n, e)) - ) - return !1; - (0, R.default)("Draggable: onDragStop: %j", e); - var r = { dragging: !1, slackX: 0, slackY: 0 }; - if (Boolean(n.props.position)) { - var o = n.props.position, - a = o.x, - i = o.y; - (r.x = a), (r.y = i); - } - n.setState(r); - }), - (n.state = { - dragging: !1, - dragged: !1, - x: t.position ? t.position.x : t.defaultPosition.x, - y: t.position ? t.position.y : t.defaultPosition.y, - slackX: 0, - slackY: 0, - isElementSVG: !1 - }), - n - ); - } - return ( - s(e, t), - c(e, [ - { - key: "componentWillMount", - value: function() { - !this.props.position || - this.props.onDrag || - this.props.onStop || - console.warn( - "A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element." - ); - } - }, - { - key: "componentDidMount", - value: function() { - void 0 !== window.SVGElement && - g.default.findDOMNode(this) instanceof - window.SVGElement && - this.setState({ isElementSVG: !0 }); - } - }, - { - key: "componentWillReceiveProps", - value: function(t) { - !t.position || - (this.props.position && - t.position.x === this.props.position.x && - t.position.y === this.props.position.y) || - this.setState({ x: t.position.x, y: t.position.y }); - } - }, - { - key: "componentWillUnmount", - value: function() { - this.setState({ dragging: !1 }); - } - }, - { - key: "render", - value: function() { - var t, - e = {}, - n = null, - r = Boolean(this.props.position), - a = !r || this.state.dragging, - i = this.props.position || this.props.defaultPosition, - s = { - x: (0, w.canDragX)(this) && a ? this.state.x : i.x, - y: (0, w.canDragY)(this) && a ? this.state.y : i.y - }; - this.state.isElementSVG - ? (n = (0, b.createSVGTransform)(s)) - : (e = (0, b.createCSSTransform)(s)); - var l = this.props, - c = l.defaultClassName, - f = l.defaultClassNameDragging, - d = l.defaultClassNameDragged, - h = p.default.Children.only(this.props.children), - y = (0, v.default)( - h.props.className || "", - c, - ((t = {}), - o(t, f, this.state.dragging), - o(t, d, this.state.dragged), - t) - ); - return p.default.createElement( - _.default, - u({}, this.props, { - onStart: this.onDragStart, - onDrag: this.onDrag, - onStop: this.onDragStop - }), - p.default.cloneElement(h, { - className: y, - style: u({}, h.props.style, e), - transform: n - }) - ); - } - } - ]), - e - ); - })(p.default.Component); - (D.displayName = "Draggable"), - (D.propTypes = u({}, _.default.propTypes, { - axis: h.default.oneOf(["both", "x", "y", "none"]), - bounds: h.default.oneOfType([ - h.default.shape({ - left: h.default.number, - right: h.default.number, - top: h.default.number, - bottom: h.default.number - }), - h.default.string, - h.default.oneOf([!1]) - ]), - defaultClassName: h.default.string, - defaultClassNameDragging: h.default.string, - defaultClassNameDragged: h.default.string, - defaultPosition: h.default.shape({ - x: h.default.number, - y: h.default.number - }), - position: h.default.shape({ - x: h.default.number, - y: h.default.number - }), - className: x.dontSetMe, - style: x.dontSetMe, - transform: x.dontSetMe - })), - (D.defaultProps = u({}, _.default.defaultProps, { - axis: "both", - bounds: !1, - defaultClassName: "react-draggable", - defaultClassNameDragging: "react-draggable-dragging", - defaultClassNameDragged: "react-draggable-dragged", - defaultPosition: { x: 0, y: 0 }, - position: null - })), - (e.default = D); - }, - function(t, e, n) { - "use strict"; - var r = n(1), - o = n(2), - a = n(8), - i = n(15), - s = n(3), - u = n(16); - t.exports = function(t, e) { - function n(t) { - var e = t && ((D && t[D]) || t[j]); - if ("function" == typeof e) return e; - } - function l(t, e) { - return t === e ? 0 !== t || 1 / t == 1 / e : t !== t && e !== e; - } - function c(t) { - (this.message = t), (this.stack = ""); - } - function f(t) { - function n(n, u, l, f, p, d, h) { - if (((f = f || E), (d = d || l), h !== s)) - if (e) - o( - !1, - "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types" - ); - else if ( - "production" !== - Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV && - "undefined" != typeof console - ) { - var y = f + ":" + l; - !r[y] && - i < 3 && - (a( - !1, - "You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.", - d, - f - ), - (r[y] = !0), - i++); - } - return null == u[l] - ? n - ? new c( - null === u[l] - ? "The " + - p + - " `" + - d + - "` is marked as required in `" + - f + - "`, but its value is `null`." - : "The " + - p + - " `" + - d + - "` is marked as required in `" + - f + - "`, but its value is `undefined`." - ) - : null - : t(u, l, f, p, d); - } - if ( - "production" !== Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV - ) - var r = {}, - i = 0; - var u = n.bind(null, !1); - return (u.isRequired = n.bind(null, !0)), u; - } - function p(t) { - function e(e, n, r, o, a, i) { - var s = e[n]; - if (S(s) !== t) - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - _(s) + - "` supplied to `" + - r + - "`, expected `" + - t + - "`." - ); - return null; - } - return f(e); - } - function d(t) { - function e(e, n, r, o, a) { - if ("function" != typeof t) - return new c( - "Property `" + - a + - "` of component `" + - r + - "` has invalid PropType notation inside arrayOf." - ); - var i = e[n]; - if (!Array.isArray(i)) { - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - S(i) + - "` supplied to `" + - r + - "`, expected an array." - ); - } - for (var u = 0; u < i.length; u++) { - var l = t(i, u, r, o, a + "[" + u + "]", s); - if (l instanceof Error) return l; - } - return null; - } - return f(e); - } - function h(t) { - function e(e, n, r, o, a) { - if (!(e[n] instanceof t)) { - var i = t.name || E; - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - R(e[n]) + - "` supplied to `" + - r + - "`, expected instance of `" + - i + - "`." - ); - } - return null; - } - return f(e); - } - function y(t) { - function e(e, n, r, o, a) { - for (var i = e[n], s = 0; s < t.length; s++) - if (l(i, t[s])) return null; - return new c( - "Invalid " + - o + - " `" + - a + - "` of value `" + - i + - "` supplied to `" + - r + - "`, expected one of " + - JSON.stringify(t) + - "." - ); - } - return Array.isArray(t) - ? f(e) - : ("production" !== - Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV && - a( - !1, - "Invalid argument supplied to oneOf, expected an instance of array." - ), - r.thatReturnsNull); - } - function g(t) { - function e(e, n, r, o, a) { - if ("function" != typeof t) - return new c( - "Property `" + - a + - "` of component `" + - r + - "` has invalid PropType notation inside objectOf." - ); - var i = e[n], - u = S(i); - if ("object" !== u) - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - u + - "` supplied to `" + - r + - "`, expected an object." - ); - for (var l in i) - if (i.hasOwnProperty(l)) { - var f = t(i, l, r, o, a + "." + l, s); - if (f instanceof Error) return f; - } - return null; - } - return f(e); - } - function m(t) { - function e(e, n, r, o, a) { - for (var i = 0; i < t.length; i++) { - if (null == (0, t[i])(e, n, r, o, a, s)) return null; - } - return new c( - "Invalid " + o + " `" + a + "` supplied to `" + r + "`." - ); - } - if (!Array.isArray(t)) - return ( - "production" !== - Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV && - a( - !1, - "Invalid argument supplied to oneOfType, expected an instance of array." - ), - r.thatReturnsNull - ); - for (var n = 0; n < t.length; n++) { - var o = t[n]; - if ("function" != typeof o) - return ( - a( - !1, - "Invalid argument supplied to oneOfType. Expected an array of check functions, but received %s at index %s.", - O(o), - n - ), - r.thatReturnsNull - ); - } - return f(e); - } - function v(t) { - function e(e, n, r, o, a) { - var i = e[n], - u = S(i); - if ("object" !== u) - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - u + - "` supplied to `" + - r + - "`, expected `object`." - ); - for (var l in t) { - var f = t[l]; - if (f) { - var p = f(i, l, r, o, a + "." + l, s); - if (p) return p; - } - } - return null; - } - return f(e); - } - function b(t) { - function e(e, n, r, o, a) { - var u = e[n], - l = S(u); - if ("object" !== l) - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - l + - "` supplied to `" + - r + - "`, expected `object`." - ); - var f = i({}, e[n], t); - for (var p in f) { - var d = t[p]; - if (!d) - return new c( - "Invalid " + - o + - " `" + - a + - "` key `" + - p + - "` supplied to `" + - r + - "`.\nBad object: " + - JSON.stringify(e[n], null, " ") + - "\nValid keys: " + - JSON.stringify(Object.keys(t), null, " ") - ); - var h = d(u, p, r, o, a + "." + p, s); - if (h) return h; - } - return null; - } - return f(e); - } - function w(e) { - switch (typeof e) { - case "number": - case "string": - case "undefined": - return !0; - case "boolean": - return !e; - case "object": - if (Array.isArray(e)) return e.every(w); - if (null === e || t(e)) return !0; - var r = n(e); - if (!r) return !1; - var o, - a = r.call(e); - if (r !== e.entries) { - for (; !(o = a.next()).done; ) if (!w(o.value)) return !1; - } else - for (; !(o = a.next()).done; ) { - var i = o.value; - if (i && !w(i[1])) return !1; - } - return !0; - default: - return !1; - } - } - function x(t, e) { - return ( - "symbol" === t || - ("Symbol" === e["@@toStringTag"] || - ("function" == typeof Symbol && e instanceof Symbol)) - ); - } - function S(t) { - var e = typeof t; - return Array.isArray(t) - ? "array" - : t instanceof RegExp ? "object" : x(e, t) ? "symbol" : e; - } - function _(t) { - if (void 0 === t || null === t) return "" + t; - var e = S(t); - if ("object" === e) { - if (t instanceof Date) return "date"; - if (t instanceof RegExp) return "regexp"; - } - return e; - } - function O(t) { - var e = _(t); - switch (e) { - case "array": - case "object": - return "an " + e; - case "boolean": - case "date": - case "regexp": - return "a " + e; - default: - return e; - } - } - function R(t) { - return t.constructor && t.constructor.name - ? t.constructor.name - : E; - } - var D = "function" == typeof Symbol && Symbol.iterator, - j = "@@iterator", - E = "<>", - T = { - array: p("array"), - bool: p("boolean"), - func: p("function"), - number: p("number"), - object: p("object"), - string: p("string"), - symbol: p("symbol"), - any: (function() { - return f(r.thatReturnsNull); - })(), - arrayOf: d, - element: (function() { - function e(e, n, r, o, a) { - var i = e[n]; - if (!t(i)) { - return new c( - "Invalid " + - o + - " `" + - a + - "` of type `" + - S(i) + - "` supplied to `" + - r + - "`, expected a single ReactElement." - ); - } - return null; - } - return f(e); - })(), - instanceOf: h, - node: (function() { - function t(t, e, n, r, o) { - return w(t[e]) - ? null - : new c( - "Invalid " + - r + - " `" + - o + - "` supplied to `" + - n + - "`, expected a ReactNode." - ); - } - return f(t); - })(), - objectOf: g, - oneOf: y, - oneOfType: m, - shape: v, - exact: b - }; - return ( - (c.prototype = Error.prototype), - (T.checkPropTypes = u), - (T.PropTypes = T), - T - ); - }; - }, - function(t, e, n) { - "use strict"; - function r(t) { - if (null === t || void 0 === t) - throw new TypeError( - "Object.assign cannot be called with null or undefined" - ); - return Object(t); - } /* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - var o = Object.getOwnPropertySymbols, - a = Object.prototype.hasOwnProperty, - i = Object.prototype.propertyIsEnumerable; - t.exports = (function() { - try { - if (!Object.assign) return !1; - var t = new String("abc"); - if (((t[5] = "de"), "5" === Object.getOwnPropertyNames(t)[0])) - return !1; - for (var e = {}, n = 0; n < 10; n++) - e["_" + String.fromCharCode(n)] = n; - if ( - "0123456789" !== - Object.getOwnPropertyNames(e) - .map(function(t) { - return e[t]; - }) - .join("") - ) - return !1; - var r = {}; - return ( - "abcdefghijklmnopqrst".split("").forEach(function(t) { - r[t] = t; - }), - "abcdefghijklmnopqrst" === - Object.keys(Object.assign({}, r)).join("") - ); - } catch (t) { - return !1; - } - })() - ? Object.assign - : function(t, e) { - for (var n, s, u = r(t), l = 1; l < arguments.length; l++) { - n = Object(arguments[l]); - for (var c in n) a.call(n, c) && (u[c] = n[c]); - if (o) { - s = o(n); - for (var f = 0; f < s.length; f++) - i.call(n, s[f]) && (u[s[f]] = n[s[f]]); - } - } - return u; - }; - }, - function(t, e, n) { - "use strict"; - function r(t, e, n, r, u) { - if ("production" !== Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV) - for (var l in t) - if (t.hasOwnProperty(l)) { - var c; - try { - o( - "function" == typeof t[l], - "%s: %s type `%s` is invalid; it must be a function, usually from the `prop-types` package, but received `%s`.", - r || "React class", - n, - l, - typeof t[l] - ), - (c = t[l](e, l, r, n, null, i)); - } catch (t) { - c = t; - } - if ( - (a( - !c || c instanceof Error, - "%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", - r || "React class", - n, - l, - typeof c - ), - c instanceof Error && !(c.message in s)) - ) { - s[c.message] = !0; - var f = u ? u() : ""; - a( - !1, - "Failed %s type: %s%s", - n, - c.message, - null != f ? f : "" - ); - } - } - } - if ("production" !== Object({ DRAGGABLE_DEBUG: void 0 }).NODE_ENV) - var o = n(2), - a = n(8), - i = n(3), - s = {}; - t.exports = r; - }, - function(t, e, n) { - "use strict"; - var r = n(1), - o = n(2), - a = n(3); - t.exports = function() { - function t(t, e, n, r, i, s) { - s !== a && - o( - !1, - "Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types" - ); - } - function e() { - return t; - } - t.isRequired = t; - var n = { - array: t, - bool: t, - func: t, - number: t, - object: t, - string: t, - symbol: t, - any: t, - arrayOf: e, - element: t, - instanceOf: e, - node: t, - objectOf: e, - oneOf: e, - oneOfType: e, - shape: e, - exact: e - }; - return (n.checkPropTypes = r), (n.PropTypes = n), n; - }; - }, - function(t, e, n) { - var r, - o; /*! - Copyright (c) 2016 Jed Watson. +*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){"use strict";n.d(e,"e",(function(){return s})),n.d(e,"g",(function(){return c})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"f",(function(){return p})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return d}));var r=n(1),o=n(6),a=n.n(o),i=n(2);function s(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o="string"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=h(t);if("string"==typeof o){var s,c=a.ownerDocument,u=c.defaultView;if(!((s="parent"===o?a.parentNode:c.querySelector(o))instanceof u.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');var l=u.getComputedStyle(a),p=u.getComputedStyle(s);o={left:-a.offsetLeft+Object(r.c)(p.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(p.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(s)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(p.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(s)-Object(i.k)(a)-a.offsetTop+Object(r.c)(p.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function c(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function u(t){return"both"===t.props.axis||"x"===t.props.axis}function l(t){return"both"===t.props.axis||"y"===t.props.axis}function p(t,e,n){var r="number"==typeof e?Object(i.e)(t,e):null;if("number"==typeof e&&!r)return null;var o=h(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function f(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=h(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function h(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}},function(t,e,n){"use strict";function r(){}n.d(e,"a",(function(){return r}))},function(t,e){t.exports=r},function(t,e){t.exports=o},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return w}));var r=n(5),o=n.n(r),a=n(0),i=n.n(a),s=n(6),c=n.n(s),u=n(2),l=n(3),p=n(1),f=n(4);function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(u.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(u.i)(t.target,n.props.cancel,e))){var o=Object(u.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,g(n));if(null!=a){var i=a.x,s=a.y,p=Object(l.c)(g(n),i,s);Object(f.a)("DraggableCore: handleDragStart: %j",p),Object(f.a)("calling",n.props.onStart),!1!==n.props.onStart(t,p)&&(n.props.enableUserSelectHack&&Object(u.b)(r),n.setState({dragging:!0,lastX:i,lastY:s}),Object(u.a)(r,O.move,n.handleDrag),Object(u.a)(r,O.stop,n.handleDragStop))}}})),m(g(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,g(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,s=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}(Object(l.g)(n.props.grid,a,i),2);if(a=s[0],i=s[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var c=Object(l.c)(g(n),r,o);if(Object(f.a)("DraggableCore: handleDrag: %j",c),!1!==n.props.onDrag(t,c))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var u=document.createEvent("MouseEvents");u.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(u)}}})),m(g(n),"handleDragStop",(function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,g(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(g(n),r,o),i=c.a.findDOMNode(g(n));i&&n.props.enableUserSelectHack&&Object(u.n)(i.ownerDocument),Object(f.a)("DraggableCore: handleDragStop: %j",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(f.a)("DraggableCore: Removing handlers"),Object(u.m)(i.ownerDocument,O.move,n.handleDrag),Object(u.m)(i.ownerDocument,O.stop,n.handleDragStop))}}})),m(g(n),"onMouseDown",(function(t){return O=v.mouse,n.handleDragStart(t)})),m(g(n),"onMouseUp",(function(t){return O=v.mouse,n.handleDragStop(t)})),m(g(n),"onTouchStart",(function(t){return O=v.touch,n.handleDragStart(t)})),m(g(n),"onTouchEnd",(function(t){return O=v.touch,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&b(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=c.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(u.m)(e,v.mouse.move,this.handleDrag),Object(u.m)(e,v.touch.move,this.handleDrag),Object(u.m)(e,v.mouse.stop,this.handleDragStop),Object(u.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(u.n)(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(u.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&h(n.prototype,r),e}();m(w,"displayName","DraggableCore"),m(w,"propTypes",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:p.a,style:p.a,transform:p.a}),m(w,"defaultProps",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r; +/*! + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/ - !(function() { - "use strict"; - function n() { - for (var t = [], e = 0; e < arguments.length; e++) { - var r = arguments[e]; - if (r) { - var o = typeof r; - if ("string" === o || "number" === o) t.push(r); - else if (Array.isArray(r)) t.push(n.apply(null, r)); - else if ("object" === o) - for (var i in r) a.call(r, i) && r[i] && t.push(i); - } - } - return t.join(" "); - } - var a = {}.hasOwnProperty; - void 0 !== t && t.exports - ? (t.exports = n) - : ((r = []), - void 0 !== - (o = function() { - return n; - }.apply(e, r)) && (t.exports = o)); - })(); - }, - function(t, e, n) { - "use strict"; - function r() { - var t = - arguments.length > 0 && void 0 !== arguments[0] - ? arguments[0] - : "transform"; - if ("undefined" == typeof window || void 0 === window.document) - return ""; - var e = window.document.documentElement.style; - if (t in e) return ""; - for (var n = 0; n < s.length; n++) - if (o(t, s[n]) in e) return s[n]; - return ""; - } - function o(t, e) { - return e ? "" + e + i(t) : t; - } - function a(t, e) { - return e ? "-" + e.toLowerCase() + "-" + t : t; - } - function i(t) { - for (var e = "", n = !0, r = 0; r < t.length; r++) - n - ? ((e += t[r].toUpperCase()), (n = !1)) - : "-" === t[r] ? (n = !0) : (e += t[r]); - return e; - } - Object.defineProperty(e, "__esModule", { value: !0 }), - (e.getPrefix = r), - (e.browserPrefixToKey = o), - (e.browserPrefixToStyle = a); - var s = ["Moz", "Webkit", "O", "ms"]; - e.default = r(); - }, - function(t, e) { - function n() { - throw new Error("setTimeout has not been defined"); - } - function r() { - throw new Error("clearTimeout has not been defined"); - } - function o(t) { - if (c === setTimeout) return setTimeout(t, 0); - if ((c === n || !c) && setTimeout) - return (c = setTimeout), setTimeout(t, 0); - try { - return c(t, 0); - } catch (e) { - try { - return c.call(null, t, 0); - } catch (e) { - return c.call(this, t, 0); - } - } - } - function a(t) { - if (f === clearTimeout) return clearTimeout(t); - if ((f === r || !f) && clearTimeout) - return (f = clearTimeout), clearTimeout(t); - try { - return f(t); - } catch (e) { - try { - return f.call(null, t); - } catch (e) { - return f.call(this, t); - } - } - } - function i() { - y && - d && - ((y = !1), - d.length ? (h = d.concat(h)) : (g = -1), - h.length && s()); - } - function s() { - if (!y) { - var t = o(i); - y = !0; - for (var e = h.length; e; ) { - for (d = h, h = []; ++g < e; ) d && d[g].run(); - (g = -1), (e = h.length); - } - (d = null), (y = !1), a(t); - } - } - function u(t, e) { - (this.fun = t), (this.array = e); - } - function l() {} - var c, - f, - p = (t.exports = {}); - !(function() { - try { - c = "function" == typeof setTimeout ? setTimeout : n; - } catch (t) { - c = n; - } - try { - f = "function" == typeof clearTimeout ? clearTimeout : r; - } catch (t) { - f = r; - } - })(); - var d, - h = [], - y = !1, - g = -1; - (p.nextTick = function(t) { - var e = new Array(arguments.length - 1); - if (arguments.length > 1) - for (var n = 1; n < arguments.length; n++) - e[n - 1] = arguments[n]; - h.push(new u(t, e)), 1 !== h.length || y || o(s); - }), - (u.prototype.run = function() { - this.fun.apply(null, this.array); - }), - (p.title = "browser"), - (p.browser = !0), - (p.env = {}), - (p.argv = []), - (p.version = ""), - (p.versions = {}), - (p.on = l), - (p.addListener = l), - (p.once = l), - (p.off = l), - (p.removeListener = l), - (p.removeAllListeners = l), - (p.emit = l), - (p.prependListener = l), - (p.prependOnceListener = l), - (p.listeners = function(t) { - return []; - }), - (p.binding = function(t) { - throw new Error("process.binding is not supported"); - }), - (p.cwd = function() { - return "/"; - }), - (p.chdir = function(t) { - throw new Error("process.chdir is not supported"); - }), - (p.umask = function() { - return 0; - }); - } - ]); - }); - }, - function(t, n) { - t.exports = e; - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - var n = {}; - for (var r in t) - e.indexOf(r) >= 0 || - (Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r])); - return n; - } - function a(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function i(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function s(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - e.__esModule = !0; - var u = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - l = n(0), - c = r(l), - f = n(1), - p = r(f), - d = n(6), - h = n(19), - y = r(h), - g = (function(t) { - function e() { - var n, r, o; - a(this, e); - for (var s = arguments.length, u = Array(s), l = 0; l < s; l++) - u[l] = arguments[l]; - return ( - (n = r = i(this, t.call.apply(t, [this].concat(u)))), - (r.state = { - resizing: !1, - width: r.props.width, - height: r.props.height, - slackW: 0, - slackH: 0 - }), - (o = n), - i(r, o) - ); - } - return ( - s(e, t), - (e.prototype.componentWillReceiveProps = function(t) { - this.state.resizing || - (t.width === this.props.width && - t.height === this.props.height) || - this.setState({ width: t.width, height: t.height }); - }), - (e.prototype.lockAspectRatio = function(t, e, n) { - return (e = t / n), (t = e * n), [t, e]; - }), - (e.prototype.runConstraints = function(t, e) { - var n = [this.props.minConstraints, this.props.maxConstraints], - r = n[0], - o = n[1]; - if (this.props.lockAspectRatio) { - var a = this.state.width / this.state.height; - (e = t / a), (t = e * a); - } - if (!r && !o) return [t, e]; - var i = t, - s = e, - u = this.state, - l = u.slackW, - c = u.slackH; - return ( - (t += l), - (e += c), - r && ((t = Math.max(r[0], t)), (e = Math.max(r[1], e))), - o && ((t = Math.min(o[0], t)), (e = Math.min(o[1], e))), - (l += i - t), - (c += s - e), - (l === this.state.slackW && c === this.state.slackH) || - this.setState({ slackW: l, slackH: c }), - [t, e] - ); - }), - (e.prototype.resizeHandler = function(t) { - var e = this; - return function(n, r) { - var o = r.node, - a = r.deltaX, - i = r.deltaY, - s = "both" === e.props.axis || "x" === e.props.axis, - u = "both" === e.props.axis || "y" === e.props.axis, - l = e.state.width + (s ? a : 0), - c = e.state.height + (u ? i : 0), - f = l !== e.state.width, - p = c !== e.state.height; - if ("onResize" !== t || f || p) { - var d = e.runConstraints(l, c); - (l = d[0]), (c = d[1]); - var h = {}; - if ("onResizeStart" === t) h.resizing = !0; - else if ("onResizeStop" === t) - (h.resizing = !1), (h.slackW = h.slackH = 0); - else { - if (l === e.state.width && c === e.state.height) return; - (h.width = l), (h.height = c); - } - "function" == typeof e.props[t] - ? ("function" == typeof n.persist && n.persist(), - e.setState(h, function() { - return e.props[t](n, { - node: o, - size: { width: l, height: c } - }); - })) - : e.setState(h); - } - }; - }), - (e.prototype.render = function() { - var t = this.props, - e = t.children, - n = t.draggableOpts, - r = (t.width, - t.height, - t.handleSize, - t.lockAspectRatio, - t.axis, - t.minConstraints, - t.maxConstraints, - t.onResize, - t.onResizeStop, - t.onResizeStart, - o(t, [ - "children", - "draggableOpts", - "width", - "height", - "handleSize", - "lockAspectRatio", - "axis", - "minConstraints", - "maxConstraints", - "onResize", - "onResizeStop", - "onResizeStart" - ])), - a = r.className - ? r.className + " react-resizable" - : "react-resizable"; - return (0, y.default)( - e, - u({}, r, { - className: a, - children: [ - e.props.children, - c.default.createElement( - d.DraggableCore, - u({}, n, { - key: "resizableHandle", - onStop: this.resizeHandler("onResizeStop"), - onStart: this.resizeHandler("onResizeStart"), - onDrag: this.resizeHandler("onResize") - }), - c.default.createElement("span", { - className: "react-resizable-handle" - }) - ) - ] - }) - ); - }), - e - ); - })(c.default.Component); - (g.propTypes = { - children: p.default.element.isRequired, - width: p.default.number.isRequired, - height: p.default.number.isRequired, - handleSize: p.default.array, - lockAspectRatio: p.default.bool, - axis: p.default.oneOf(["both", "x", "y", "none"]), - minConstraints: p.default.arrayOf(p.default.number), - maxConstraints: p.default.arrayOf(p.default.number), - onResizeStop: p.default.func, - onResizeStart: p.default.func, - onResize: p.default.func, - draggableOpts: p.default.object - }), - (g.defaultProps = { - handleSize: [20, 20], - lockAspectRatio: !1, - axis: "both", - minConstraints: [20, 20], - maxConstraints: [1 / 0, 1 / 0] - }), - (e.default = g); - }, - function(t, e, n) { - "use strict"; - function r(t, e) { - for (var n = i(t), r = n[0], o = 1, a = n.length; o < a; o++) { - var s = n[o]; - e > t[s] && (r = s); - } - return r; - } - function o(t, e) { - if (!e[t]) - throw new Error( - "ResponsiveReactGridLayout: `cols` entry for breakpoint " + - t + - " is missing!" - ); - return e[t]; - } - function a(t, e, n, r, o, a) { - if (t[n]) return (0, s.cloneLayout)(t[n]); - for ( - var u = t[r], - l = i(e), - c = l.slice(l.indexOf(n)), - f = 0, - p = c.length; - f < p; - f++ - ) { - var d = c[f]; - if (t[d]) { - u = t[d]; - break; - } - } - return ( - (u = (0, s.cloneLayout)(u || [])), - (0, s.compact)((0, s.correctBounds)(u, { cols: o }), a, o) - ); - } - function i(t) { - return Object.keys(t).sort(function(e, n) { - return t[e] - t[n]; - }); - } - (e.__esModule = !0), - (e.getBreakpointFromWidth = r), - (e.getColsFromBreakpoint = o), - (e.findOrGenerateResponsiveLayout = a), - (e.sortBreakpoints = i); - var s = n(2); - }, - function(t, e, n) { - "use strict"; - (t.exports = n(4).default), - (t.exports.utils = n(2)), - (t.exports.Responsive = n(21).default), - (t.exports.Responsive.utils = n(9)), - (t.exports.WidthProvider = n(22).default); - }, - function(t, e, n) { - "use strict"; - var r = n(12), - o = n(13), - a = n(14); - t.exports = function() { - function t(t, e, n, r, i, s) { - s !== a && - o( - !1, - "Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types" - ); - } - function e() { - return t; - } - t.isRequired = t; - var n = { - array: t, - bool: t, - func: t, - number: t, - object: t, - string: t, - symbol: t, - any: t, - arrayOf: e, - element: t, - instanceOf: e, - node: t, - objectOf: e, - oneOf: e, - oneOfType: e, - shape: e, - exact: e - }; - return (n.checkPropTypes = r), (n.PropTypes = n), n; - }; - }, - function(t, e, n) { - "use strict"; - function r(t) { - return function() { - return t; - }; - } - var o = function() {}; - (o.thatReturns = r), - (o.thatReturnsFalse = r(!1)), - (o.thatReturnsTrue = r(!0)), - (o.thatReturnsNull = r(null)), - (o.thatReturnsThis = function() { - return this; - }), - (o.thatReturnsArgument = function(t) { - return t; - }), - (t.exports = o); - }, - function(t, e, n) { - "use strict"; - function r(t, e, n, r, a, i, s, u) { - if ((o(e), !t)) { - var l; - if (void 0 === e) - l = new Error( - "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings." - ); - else { - var c = [n, r, a, i, s, u], - f = 0; - (l = new Error( - e.replace(/%s/g, function() { - return c[f++]; - }) - )), - (l.name = "Invariant Violation"); - } - throw ((l.framesToPop = 1), l); - } - } - var o = function(t) {}; - t.exports = r; - }, - function(t, e, n) { - "use strict"; - t.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; - }, - function(t, e) { - var n; - n = (function() { - return this; - })(); - try { - n = n || Function("return this")() || (0, eval)("this"); - } catch (t) { - "object" == typeof window && (n = window); - } - t.exports = n; - }, - function(t, e) { - t.exports = function(t) { - return ( - t.webpackPolyfill || - ((t.deprecate = function() {}), - (t.paths = []), - t.children || (t.children = []), - Object.defineProperty(t, "loaded", { - enumerable: !0, - get: function() { - return t.l; - } - }), - Object.defineProperty(t, "id", { - enumerable: !0, - get: function() { - return t.i; - } - }), - (t.webpackPolyfill = 1)), - t - ); - }; - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function a(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function i(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - e.__esModule = !0; - var s = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - u = n(0), - l = r(u), - c = n(1), - f = r(c), - p = n(6), - d = n(18), - h = n(2), - y = n(5), - g = r(y), - m = (function(t) { - function e() { - var n, r, i; - o(this, e); - for (var s = arguments.length, u = Array(s), l = 0; l < s; l++) - u[l] = arguments[l]; - return ( - (n = r = a(this, t.call.apply(t, [this].concat(u)))), - (r.state = { resizing: null, dragging: null, className: "" }), - (i = n), - a(r, i) - ); - } - return ( - i(e, t), - (e.prototype.calcColWidth = function() { - var t = this.props, - e = t.margin, - n = t.containerPadding, - r = t.containerWidth, - o = t.cols; - return (r - e[0] * (o - 1) - 2 * n[0]) / o; - }), - (e.prototype.calcPosition = function(t, e, n, r, o) { - var a = this.props, - i = a.margin, - s = a.containerPadding, - u = a.rowHeight, - l = this.calcColWidth(), - c = { - left: Math.round((l + i[0]) * t + s[0]), - top: Math.round((u + i[1]) * e + s[1]), - width: - n === 1 / 0 - ? n - : Math.round(l * n + Math.max(0, n - 1) * i[0]), - height: - r === 1 / 0 - ? r - : Math.round(u * r + Math.max(0, r - 1) * i[1]) - }; - return ( - o && - o.resizing && - ((c.width = Math.round(o.resizing.width)), - (c.height = Math.round(o.resizing.height))), - o && - o.dragging && - ((c.top = Math.round(o.dragging.top)), - (c.left = Math.round(o.dragging.left))), - c - ); - }), - (e.prototype.calcXY = function(t, e) { - var n = this.props, - r = n.margin, - o = n.cols, - a = n.rowHeight, - i = n.w, - s = n.h, - u = n.maxRows, - l = this.calcColWidth(), - c = Math.round((e - r[0]) / (l + r[0])), - f = Math.round((t - r[1]) / (a + r[1])); - return ( - (c = Math.max(Math.min(c, o - i), 0)), - (f = Math.max(Math.min(f, u - s), 0)), - { x: c, y: f } - ); - }), - (e.prototype.calcWH = function(t) { - var e = t.height, - n = t.width, - r = this.props, - o = r.margin, - a = r.maxRows, - i = r.cols, - s = r.rowHeight, - u = r.x, - l = r.y, - c = this.calcColWidth(), - f = Math.round((n + o[0]) / (c + o[0])), - p = Math.round((e + o[1]) / (s + o[1])); - return ( - (f = Math.max(Math.min(f, i - u), 0)), - (p = Math.max(Math.min(p, a - l), 0)), - { w: f, h: p } - ); - }), - (e.prototype.createStyle = function(t) { - var e = this.props, - n = e.usePercentages, - r = e.containerWidth, - o = e.useCSSTransforms, - a = void 0; - return ( - o - ? (a = (0, h.setTransform)(t)) - : ((a = (0, h.setTopLeft)(t)), - n && - ((a.left = (0, h.perc)(t.left / r)), - (a.width = (0, h.perc)(t.width / r)))), - a - ); - }), - (e.prototype.mixinDraggable = function(t) { - return l.default.createElement( - p.DraggableCore, - { - onStart: this.onDragHandler("onDragStart"), - onDrag: this.onDragHandler("onDrag"), - onStop: this.onDragHandler("onDragStop"), - handle: this.props.handle, - cancel: - ".react-resizable-handle" + - (this.props.cancel ? "," + this.props.cancel : "") - }, - t - ); - }), - (e.prototype.mixinResizable = function(t, e) { - var n = this.props, - r = n.cols, - o = n.x, - a = n.minW, - i = n.minH, - s = n.maxW, - u = n.maxH, - c = this.calcPosition(0, 0, r - o, 0).width, - f = this.calcPosition(0, 0, a, i), - p = this.calcPosition(0, 0, s, u), - h = [f.width, f.height], - y = [Math.min(p.width, c), Math.min(p.height, 1 / 0)]; - return l.default.createElement( - d.Resizable, - { - width: e.width, - height: e.height, - minConstraints: h, - maxConstraints: y, - onResizeStop: this.onResizeHandler("onResizeStop"), - onResizeStart: this.onResizeHandler("onResizeStart"), - onResize: this.onResizeHandler("onResize") - }, - t - ); - }), - (e.prototype.onDragHandler = function(t) { - var e = this; - return function(n, r) { - var o = r.node, - a = r.deltaX, - i = r.deltaY, - s = e.props[t]; - if (s) { - var u = { top: 0, left: 0 }; - switch (t) { - case "onDragStart": - var l = o.offsetParent; - if (!l) return; - var c = l.getBoundingClientRect(), - f = o.getBoundingClientRect(); - (u.left = f.left - c.left + l.scrollLeft), - (u.top = f.top - c.top + l.scrollTop), - e.setState({ dragging: u }); - break; - case "onDrag": - if (!e.state.dragging) - throw new Error("onDrag called before onDragStart."); - (u.left = e.state.dragging.left + a), - (u.top = e.state.dragging.top + i), - e.setState({ dragging: u }); - break; - case "onDragStop": - if (!e.state.dragging) - throw new Error("onDragEnd called before onDragStart."); - (u.left = e.state.dragging.left), - (u.top = e.state.dragging.top), - e.setState({ dragging: null }); - break; - default: - throw new Error( - "onDragHandler called with unrecognized handlerName: " + - t - ); - } - var p = e.calcXY(u.top, u.left), - d = p.x, - h = p.y; - return s.call(e, e.props.i, d, h, { - e: n, - node: o, - newPosition: u - }); - } - }; - }), - (e.prototype.onResizeHandler = function(t) { - var e = this; - return function(n, r) { - var o = r.node, - a = r.size, - i = e.props[t]; - if (i) { - var s = e.props, - u = s.cols, - l = s.x, - c = s.i, - f = s.maxW, - p = s.minW, - d = s.maxH, - h = s.minH, - y = e.calcWH(a), - g = y.w, - m = y.h; - (g = Math.min(g, u - l)), - (g = Math.max(g, 1)), - (g = Math.max(Math.min(g, f), p)), - (m = Math.max(Math.min(m, d), h)), - e.setState({ resizing: "onResizeStop" === t ? null : a }), - i.call(e, c, g, m, { e: n, node: o, size: a }); - } - }; - }), - (e.prototype.render = function() { - var t = this.props, - e = t.x, - n = t.y, - r = t.w, - o = t.h, - a = t.isDraggable, - i = t.isResizable, - u = t.useCSSTransforms, - c = this.calcPosition(e, n, r, o, this.state), - f = l.default.Children.only(this.props.children), - p = l.default.cloneElement(f, { - className: (0, g.default)( - "react-grid-item", - f.props.className, - this.props.className, - { - static: this.props.static, - resizing: Boolean(this.state.resizing), - "react-draggable": a, - "react-draggable-dragging": Boolean(this.state.dragging), - cssTransforms: u - } - ), - style: s( - {}, - this.props.style, - f.props.style, - this.createStyle(c) - ) - }); - return ( - i && (p = this.mixinResizable(p, c)), - a && (p = this.mixinDraggable(p)), - p - ); - }), - e - ); - })(l.default.Component); - (m.propTypes = { - children: f.default.element, - cols: f.default.number.isRequired, - containerWidth: f.default.number.isRequired, - rowHeight: f.default.number.isRequired, - margin: f.default.array.isRequired, - maxRows: f.default.number.isRequired, - containerPadding: f.default.array.isRequired, - x: f.default.number.isRequired, - y: f.default.number.isRequired, - w: f.default.number.isRequired, - h: f.default.number.isRequired, - minW: function(t, e) { - var n = t[e]; - return "number" != typeof n - ? new Error("minWidth not Number") - : n > t.w || n > t.maxW - ? new Error("minWidth larger than item width/maxWidth") - : void 0; - }, - maxW: function(t, e) { - var n = t[e]; - return "number" != typeof n - ? new Error("maxWidth not Number") - : n < t.w || n < t.minW - ? new Error("maxWidth smaller than item width/minWidth") - : void 0; - }, - minH: function(t, e) { - var n = t[e]; - return "number" != typeof n - ? new Error("minHeight not Number") - : n > t.h || n > t.maxH - ? new Error("minHeight larger than item height/maxHeight") - : void 0; - }, - maxH: function(t, e) { - var n = t[e]; - return "number" != typeof n - ? new Error("maxHeight not Number") - : n < t.h || n < t.minH - ? new Error("maxHeight smaller than item height/minHeight") - : void 0; - }, - i: f.default.string.isRequired, - onDragStop: f.default.func, - onDragStart: f.default.func, - onDrag: f.default.func, - onResizeStop: f.default.func, - onResizeStart: f.default.func, - onResize: f.default.func, - isDraggable: f.default.bool.isRequired, - isResizable: f.default.bool.isRequired, - static: f.default.bool, - useCSSTransforms: f.default.bool.isRequired, - className: f.default.string, - handle: f.default.string, - cancel: f.default.string - }), - (m.defaultProps = { - className: "", - cancel: "", - handle: "", - minH: 1, - minW: 1, - maxH: 1 / 0, - maxW: 1 / 0 - }), - (e.default = m); - }, - function(t, e, n) { - "use strict"; - (t.exports = function() { - throw new Error( - "Don't instantiate Resizable directly! Use require('react-resizable').Resizable" - ); - }), - (t.exports.Resizable = n(8).default), - (t.exports.ResizableBox = n(20).default); - }, - function(t, e, n) { - "use strict"; - var r = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - o = n(0), - a = (function(t) { - return t && t.__esModule ? t : { default: t }; - })(o); - t.exports = function(t, e) { - return ( - e.style && t.props.style && (e.style = r({}, t.props.style, e.style)), - e.className && - t.props.className && - (e.className = t.props.className + " " + e.className), - a.default.cloneElement(t, e) - ); - }; - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - var n = {}; - for (var r in t) - e.indexOf(r) >= 0 || - (Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r])); - return n; - } - function a(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function i(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function s(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - e.__esModule = !0; - var u = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - l = n(0), - c = r(l), - f = n(1), - p = r(f), - d = n(8), - h = r(d), - y = (function(t) { - function e() { - var n, r, o; - a(this, e); - for (var s = arguments.length, u = Array(s), l = 0; l < s; l++) - u[l] = arguments[l]; - return ( - (n = r = i(this, t.call.apply(t, [this].concat(u)))), - (r.state = { width: r.props.width, height: r.props.height }), - (r.onResize = function(t, e) { - var n = e.size; - n.width, n.height; - r.props.onResize - ? (t.persist && t.persist(), - r.setState(n, function() { - return r.props.onResize && r.props.onResize(t, e); - })) - : r.setState(n); - }), - (o = n), - i(r, o) - ); - } - return ( - s(e, t), - (e.prototype.componentWillReceiveProps = function(t) { - (t.width === this.props.width && - t.height === this.props.height) || - this.setState({ width: t.width, height: t.height }); - }), - (e.prototype.render = function() { - var t = this.props, - e = t.handleSize, - n = (t.onResize, t.onResizeStart), - r = t.onResizeStop, - a = t.draggableOpts, - i = t.minConstraints, - s = t.maxConstraints, - l = t.lockAspectRatio, - f = t.axis, - p = (t.width, - t.height, - o(t, [ - "handleSize", - "onResize", - "onResizeStart", - "onResizeStop", - "draggableOpts", - "minConstraints", - "maxConstraints", - "lockAspectRatio", - "axis", - "width", - "height" - ])); - return c.default.createElement( - h.default, - { - handleSize: e, - width: this.state.width, - height: this.state.height, - onResizeStart: n, - onResize: this.onResize, - onResizeStop: r, - draggableOpts: a, - minConstraints: i, - maxConstraints: s, - lockAspectRatio: l, - axis: f - }, - c.default.createElement( - "div", - u( - { - style: { - width: this.state.width + "px", - height: this.state.height + "px" - } - }, - p - ) - ) - ); - }), - e - ); - })(c.default.Component); - (y.propTypes = { height: p.default.number, width: p.default.number }), - (y.defaultProps = { handleSize: [20, 20] }), - (e.default = y); - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - var n = {}; - for (var r in t) - e.indexOf(r) >= 0 || - (Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r])); - return n; - } - function a(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function i(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function s(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - e.__esModule = !0; - var u = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }, - l = n(0), - c = r(l), - f = n(1), - p = r(f), - d = n(3), - h = r(d), - y = n(2), - g = n(9), - m = n(4), - v = r(m), - b = function(t) { - return Object.prototype.toString.call(t); - }, - w = (function(t) { - function e() { - var n, r, o; - a(this, e); - for (var s = arguments.length, l = Array(s), c = 0; c < s; c++) - l[c] = arguments[c]; - return ( - (n = r = i(this, t.call.apply(t, [this].concat(l)))), - (r.state = r.generateInitialState()), - (r.onLayoutChange = function(t) { - var e; - r.props.onLayoutChange( - t, - u( - {}, - r.props.layouts, - ((e = {}), (e[r.state.breakpoint] = t), e) - ) - ); - }), - (o = n), - i(r, o) - ); - } - return ( - s(e, t), - (e.prototype.generateInitialState = function() { - var t = this.props, - e = t.width, - n = t.breakpoints, - r = t.layouts, - o = t.cols, - a = (0, g.getBreakpointFromWidth)(n, e), - i = (0, g.getColsFromBreakpoint)(a, o), - s = - !1 === this.props.verticalCompact - ? null - : this.props.compactType; - return { - layout: (0, g.findOrGenerateResponsiveLayout)(r, n, a, a, i, s), - breakpoint: a, - cols: i - }; - }), - (e.prototype.componentWillReceiveProps = function(t) { - if ( - t.width == this.props.width && - t.breakpoint === this.props.breakpoint && - (0, h.default)(t.breakpoints, this.props.breakpoints) && - (0, h.default)(t.cols, this.props.cols) - ) { - if (!(0, h.default)(t.layouts, this.props.layouts)) { - var e = this.state, - n = e.breakpoint, - r = e.cols, - o = (0, g.findOrGenerateResponsiveLayout)( - t.layouts, - t.breakpoints, - n, - n, - r, - t.compactType - ); - this.setState({ layout: o }); - } - } else this.onWidthChange(t); - }), - (e.prototype.onWidthChange = function(t) { - var e = t.breakpoints, - n = t.cols, - r = t.layouts, - o = t.compactType, - a = - t.breakpoint || - (0, g.getBreakpointFromWidth)(t.breakpoints, t.width), - i = this.state.breakpoint; - if ( - i !== a || - this.props.breakpoints !== e || - this.props.cols !== n - ) { - i in r || (r[i] = (0, y.cloneLayout)(this.state.layout)); - var s = (0, g.getColsFromBreakpoint)(a, n), - u = (0, g.findOrGenerateResponsiveLayout)(r, e, a, i, s, o); - (u = (0, y.synchronizeLayoutWithChildren)(u, t.children, s, o)), - (r[a] = u), - this.props.onLayoutChange(u, r), - this.props.onBreakpointChange(a, s), - this.props.onWidthChange( - t.width, - t.margin, - s, - t.containerPadding - ), - this.setState({ breakpoint: a, layout: u, cols: s }); - } - }), - (e.prototype.render = function() { - var t = this.props, - e = (t.breakpoint, - t.breakpoints, - t.cols, - t.layouts, - t.onBreakpointChange, - t.onLayoutChange, - t.onWidthChange, - o(t, [ - "breakpoint", - "breakpoints", - "cols", - "layouts", - "onBreakpointChange", - "onLayoutChange", - "onWidthChange" - ])); - return c.default.createElement( - v.default, - u({}, e, { - onLayoutChange: this.onLayoutChange, - layout: this.state.layout, - cols: this.state.cols - }) - ); - }), - e - ); - })(c.default.Component); - (w.propTypes = { - breakpoint: p.default.string, - breakpoints: p.default.object, - cols: p.default.object, - layouts: function(t, e) { - if ("[object Object]" !== b(t[e])) - throw new Error( - "Layout property must be an object. Received: " + b(t[e]) - ); - Object.keys(t[e]).forEach(function(e) { - if (!(e in t.breakpoints)) - throw new Error( - "Each key in layouts must align with a key in breakpoints." - ); - (0, y.validateLayout)(t.layouts[e], "layouts." + e); - }); - }, - width: p.default.number.isRequired, - onBreakpointChange: p.default.func, - onLayoutChange: p.default.func, - onWidthChange: p.default.func - }), - (w.defaultProps = { - breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }, - cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, - layouts: {}, - onBreakpointChange: y.noop, - onLayoutChange: y.noop, - onWidthChange: y.noop - }), - (e.default = w); - }, - function(t, e, n) { - "use strict"; - function r(t) { - return t && t.__esModule ? t : { default: t }; - } - function o(t, e) { - var n = {}; - for (var r in t) - e.indexOf(r) >= 0 || - (Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r])); - return n; - } - function a(t, e) { - if (!(t instanceof e)) - throw new TypeError("Cannot call a class as a function"); - } - function i(t, e) { - if (!t) - throw new ReferenceError( - "this hasn't been initialised - super() hasn't been called" - ); - return !e || ("object" != typeof e && "function" != typeof e) ? t : e; - } - function s(t, e) { - if ("function" != typeof e && null !== e) - throw new TypeError( - "Super expression must either be null or a function, not " + - typeof e - ); - (t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - })), - e && - (Object.setPrototypeOf - ? Object.setPrototypeOf(t, e) - : (t.__proto__ = e)); - } - function u(t) { - var e, n; - return ( - (n = e = (function(e) { - function n() { - var t, r, o; - a(this, n); - for (var s = arguments.length, u = Array(s), l = 0; l < s; l++) - u[l] = arguments[l]; - return ( - (t = r = i(this, e.call.apply(e, [this].concat(u)))), - (r.state = { width: 1280 }), - (r.mounted = !1), - (r.onWindowResize = function() { - if (r.mounted) { - var t = y.default.findDOMNode(r); - t instanceof HTMLElement && - r.setState({ width: t.offsetWidth }); - } - }), - (o = t), - i(r, o) - ); - } - return ( - s(n, e), - (n.prototype.componentDidMount = function() { - (this.mounted = !0), - window.addEventListener("resize", this.onWindowResize), - this.onWindowResize(); - }), - (n.prototype.componentWillUnmount = function() { - (this.mounted = !1), - window.removeEventListener("resize", this.onWindowResize); - }), - (n.prototype.render = function() { - var e = this.props, - n = e.measureBeforeMount, - r = o(e, ["measureBeforeMount"]); - return n && !this.mounted - ? f.default.createElement("div", { - className: this.props.className, - style: this.props.style - }) - : f.default.createElement(t, l({}, r, this.state)); - }), - n - ); - })(f.default.Component)), - (e.defaultProps = { measureBeforeMount: !1 }), - (e.propTypes = { measureBeforeMount: d.default.bool }), - n - ); - } - e.__esModule = !0; - var l = - Object.assign || - function(t) { - for (var e = 1; e < arguments.length; e++) { - var n = arguments[e]; - for (var r in n) - Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); - } - return t; - }; - e.default = u; - var c = n(0), - f = r(c), - p = n(1), - d = r(p), - h = n(7), - y = r(h); - } - ]); -}); -//# sourceMappingURL=react-grid-layout.min.js.map +*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&x(t,e)}(e,o.a.Component),S(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(y.a)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:v({},n)})}}]),S(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,c=e.position,u=e.positionOffset,d=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),y={},g=null,m=!Boolean(c)||this.state.dragging,O=c||r,w={x:Object(f.a)(this)&&m?this.state.x:O.x,y:Object(f.b)(this)&&m?this.state.y:O.y};this.state.isElementSVG?g=Object(p.d)(w,u):y=Object(p.c)(w,u);var j=l()(n.props.className||"",a,(D(t={},i,this.state.dragging),D(t,s,this.state.dragged),t));return o.a.createElement(h.default,b({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:j,style:v({},n.props.style,{},y),transform:g}))}}]),e}();D(P,"displayName","Draggable"),D(P,"propTypes",v({},h.default.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),D(P,"defaultProps",v({},h.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){"use strict";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(6),l=n.n(u),p=n(1),f=n(5),d=n.n(f),h=n(7),y=n(10);function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;et.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>d.x&&(g=Math.min(g,t.x)),t.y>d.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(d.w=g-d.x),Number.isFinite(b)&&(d.h=b-d.y)}}h||(d.w=e,d.h=n);var m={w:d.w,h:d.h,x:d.x,y:d.y,static:!0,i:t};this.props.onResize(s,c,d,m,o,a),this.setState({layout:Object(p.compact)(s,M(this.props),l),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,c=i.oldResizeItem,u=this.props.cols,l=Object(p.getLayoutItem)(s,t);this.props.onResizeStop(s,c,l,null,o,a);var f=Object(p.compact)(s,M(this.props),u),d=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,d)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,c=e.maxRows,u=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(x,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:c,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:u,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(p.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,c=r.containerPadding,u=r.rowHeight,l=r.maxRows,f=r.isDraggable,d=r.isResizable,h=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,O=m.droppingPosition,w=Boolean(!n.static&&f&&(n.isDraggable||null==n.isDraggable)),j=Boolean(!n.static&&d&&(n.isResizable||null==n.isResizable));return o.a.createElement(x,{containerWidth:a,cols:i,margin:s,containerPadding:c||s,maxRows:l,rowHeight:u,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:w,isResizable:j,useCSSTransforms:h&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?O:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=l()(L,n),s=_({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:p.noop,onDragLeave:a?this.onDragLeave:p.noop,onDragEnter:a?this.onDragEnter:p.noop,onDragOver:a?this.onDragOver:p.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&k(n.prototype,r),a&&k(n,a),e}(o.a.Component);T(W,"displayName","ReactGridLayout"),T(W,"propTypes",{className:i.a.string,style:i.a.object,width:i.a.number,autoSize:i.a.bool,cols:i.a.number,draggableCancel:i.a.string,draggableHandle:i.a.string,verticalCompact:function(t){t.verticalCompact,0},compactType:i.a.oneOf(["vertical","horizontal"]),layout:function(t){var e=t.layout;void 0!==e&&Object(p.validateLayout)(e,"layout")},margin:i.a.arrayOf(i.a.number),containerPadding:i.a.arrayOf(i.a.number),rowHeight:i.a.number,maxRows:i.a.number,isDraggable:i.a.bool,isResizable:i.a.bool,preventCollision:i.a.bool,useCSSTransforms:i.a.bool,transformScale:i.a.number,isDroppable:i.a.bool,onLayoutChange:i.a.func,onDragStart:i.a.func,onDrag:i.a.func,onDragStop:i.a.func,onResizeStart:i.a.func,onResize:i.a.func,onResizeStop:i.a.func,onDrop:i.a.func,droppingItem:i.a.shape({i:i.a.string.isRequired,w:i.a.number.isRequired,h:i.a.number.isRequired}),children:function(t,e){var n=t[e],r={};o.a.Children.forEach(n,(function(t){if(r[t.key])throw new Error('Duplicate child key "'+t.key+'" found! This will cause problems in ReactGridLayout.');r[t.key]=!0}))}}),T(W,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:p.noop,onDragStart:p.noop,onDrag:p.noop,onDragStop:p.noop,onResizeStart:p.noop,onResize:p.noop,onResizeStop:p.noop,onDrop:p.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(16);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles"]),f=p.className?p.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:c,minConstraints:u,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:d},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},h)))},o}(r.default.Component);e.default=l,u(l,"propTypes",{height:o.default.number,width:o.default.number}),u(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return S}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(){return(d=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){for(var n=0;n max) max = bottomY;\n }\n return max;\n}\n\nfunction cloneLayout(layout) {\n var newLayout = Array(layout.length);\n for (var _i2 = 0, len = layout.length; _i2 < len; _i2++) {\n newLayout[_i2] = cloneLayoutItem(layout[_i2]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nfunction cloneLayoutItem(layoutItem) {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nfunction childrenEqual(a, b) {\n return (0, _lodash2.default)(_react2.default.Children.map(a, function (c) {\n return c.key;\n }), _react2.default.Children.map(b, function (c) {\n return c.key;\n }));\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nfunction 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 * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nfunction compact(layout, compactType, cols) {\n // Statics go in the compareWith array right away so items flow around them.\n var compareWith = getStatics(layout);\n // We go through the items by row and column.\n var sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n var out = Array(layout.length);\n\n for (var _i3 = 0, len = sorted.length; _i3 < len; _i3++) {\n var l = cloneLayoutItem(sorted[_i3]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[_i3])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nvar heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(layout, item, moveToCoord, axis) {\n var sizeProp = heightWidth[axis];\n item[axis] += 1;\n var itemIndex = layout.indexOf(item);\n\n // Go through each item we collide with.\n for (var _i4 = itemIndex + 1; _i4 < layout.length; _i4++) {\n var otherItem = layout[_i4];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis);\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nfunction compactItem(compareWith, l, compactType, cols, fullLayout) {\n var compactV = compactType === \"vertical\";\n var compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n var collides = void 0;\n while (collides = getFirstCollision(compareWith, l)) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\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 */\nfunction correctBounds(layout, bounds) {\n var collidesWith = getStatics(layout);\n for (var _i5 = 0, len = layout.length; _i5 < len; _i5++) {\n var l = layout[_i5];\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);else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nfunction getLayoutItem(layout, id) {\n for (var _i6 = 0, len = layout.length; _i6 < len; _i6++) {\n if (layout[_i6].i === id) return layout[_i6];\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 */\nfunction getFirstCollision(layout, layoutItem) {\n for (var _i7 = 0, len = layout.length; _i7 < len; _i7++) {\n if (collides(layout[_i7], layoutItem)) return layout[_i7];\n }\n}\n\nfunction getAllCollisions(layout, layoutItem) {\n return layout.filter(function (l) {\n return collides(l, layoutItem);\n });\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 */\nfunction getStatics(layout) {\n return layout.filter(function (l) {\n return l.static;\n });\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 */\nfunction moveElement(layout, l, x, y, isUserAction, preventCollision, compactType, cols) {\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 log(\"Moving element \" + l.i + \" to [\" + String(x) + \",\" + String(y) + \"] from [\" + l.x + \",\" + l.y + \"]\");\n var oldX = l.x;\n var oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === 'number') l.x = x;\n if (typeof y === 'number') l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n var sorted = sortLayoutItems(layout, compactType);\n var movingUp = compactType === \"vertical\" && typeof y === 'number' ? oldY >= y : compactType === \"horizontal\" && typeof x === 'number' ? oldX >= x : false;\n if (movingUp) sorted = sorted.reverse();\n var collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(\"Collision prevented on \" + l.i + \", reverting.\");\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (var _i8 = 0, len = collisions.length; _i8 < len; _i8++) {\n var collision = collisions[_i8];\n log(\"Resolving collision between \" + l.i + \" at [\" + l.x + \",\" + l.y + \"] and \" + collision.i + \" at [\" + collision.x + \",\" + collision.y + \"]\");\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols);\n } else {\n layout = moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols);\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 */\nfunction moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction, compactType, cols) {\n var compactH = compactType === \"horizontal\";\n var compactV = compactType === \"vertical\";\n var preventCollision = false; // we're already colliding\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n var fakeItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\"Doing reverse collision on \" + itemToMove.i + \" up to [\" + fakeItem.x + \",\" + fakeItem.y + \"].\");\n return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);\n }\n }\n\n return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);\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 */\nfunction perc(num) {\n return num * 100 + \"%\";\n}\n\nfunction setTransform(_ref) {\n var top = _ref.top,\n left = _ref.left,\n width = _ref.width,\n height = _ref.height;\n\n // Replace unitless items with px\n var translate = \"translate(\" + left + \"px,\" + top + \"px)\";\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: width + \"px\",\n height: height + \"px\",\n position: \"absolute\"\n };\n}\n\nfunction setTopLeft(_ref2) {\n var top = _ref2.top,\n left = _ref2.left,\n width = _ref2.width,\n height = _ref2.height;\n\n return {\n top: top + \"px\",\n left: left + \"px\",\n width: width + \"px\",\n height: height + \"px\",\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nfunction sortLayoutItems(layout, compactType) {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);else return sortLayoutItemsByRowCol(layout);\n}\n\nfunction 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 } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nfunction sortLayoutItemsByColRow(layout) {\n return [].concat(layout).sort(function (a, b) {\n if (a.x > b.x || a.x === b.x && a.y > b.y) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nfunction synchronizeLayoutWithChildren(initialLayout, children, cols, compactType) {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n var layout = [];\n _react2.default.Children.forEach(children, function (child, i) {\n // Don't overwrite if it already exists.\n var exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\");\n }\n var g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem(_extends({}, g, { i: child.key }));\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\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 */\nfunction validateLayout(layout) {\n var contextName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Layout\";\n\n var subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n for (var _i9 = 0, len = layout.length; _i9 < len; _i9++) {\n var item = layout[_i9];\n for (var j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + _i9 + \"].\" + subProps[j] + \" must be a number!\");\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + _i9 + \"].i must be a string!\");\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + _i9 + \"].static must be a boolean!\");\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nfunction autoBindHandlers(el, fns) {\n fns.forEach(function (key) {\n return el[key] = el[key].bind(el);\n });\n}\n\nfunction log() {\n var _console;\n\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n (_console = console).log.apply(_console, arguments);\n}\n\nvar noop = exports.noop = function noop() {};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15), __webpack_require__(16)(module)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lodash = __webpack_require__(3);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(5);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _utils = __webpack_require__(2);\n\nvar _GridItem = __webpack_require__(17);\n\nvar _GridItem2 = _interopRequireDefault(_GridItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// End Types\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\n// Types\nvar ReactGridLayout = function (_React$Component) {\n _inherits(ReactGridLayout, _React$Component);\n\n // TODO publish internal ReactClass displayName transform\n function ReactGridLayout(props, context) {\n _classCallCheck(this, ReactGridLayout);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _initialiseProps.call(_this);\n\n (0, _utils.autoBindHandlers)(_this, [\"onDragStart\", \"onDrag\", \"onDragStop\", \"onResizeStart\", \"onResize\", \"onResizeStop\"]);\n return _this;\n }\n\n ReactGridLayout.prototype.componentDidMount = function componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n };\n\n ReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var newLayoutBase = void 0;\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (!(0, _lodash2.default)(nextProps.layout, this.props.layout) || nextProps.compactType !== this.props.compactType) {\n newLayoutBase = nextProps.layout;\n } else if (!(0, _utils.childrenEqual)(this.props.children, nextProps.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = this.state.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n var newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, this.compactType(nextProps));\n var _oldLayout = this.state.layout;\n this.setState({ layout: newLayout });\n this.onLayoutMaybeChanged(newLayout, _oldLayout);\n }\n };\n\n /**\n * Calculates a pixel value for the container.\n * @return {String} Container height in pixels.\n */\n\n\n ReactGridLayout.prototype.containerHeight = function containerHeight() {\n if (!this.props.autoSize) return;\n var nbRow = (0, _utils.bottom)(this.state.layout);\n var containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1];\n return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + \"px\";\n };\n\n ReactGridLayout.prototype.compactType = function compactType(props) {\n if (!props) props = this.props;\n return props.verticalCompact === false ? null : props.compactType;\n };\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n\n\n ReactGridLayout.prototype.onDragStart = function onDragStart(i, x, y, _ref) {\n var e = _ref.e,\n node = _ref.node;\n var layout = this.state.layout;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n };\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n\n\n ReactGridLayout.prototype.onDrag = function onDrag(i, x, y, _ref2) {\n var e = _ref2.e,\n node = _ref2.node;\n var oldDragItem = this.state.oldDragItem;\n var layout = this.state.layout;\n var cols = this.props.cols;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n var isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, this.props.preventCollision, this.compactType(), cols);\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: (0, _utils.compact)(layout, this.compactType(), cols),\n activeDrag: placeholder\n });\n };\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n\n\n ReactGridLayout.prototype.onDragStop = function onDragStop(i, x, y, _ref3) {\n var e = _ref3.e,\n node = _ref3.node;\n var oldDragItem = this.state.oldDragItem;\n var layout = this.state.layout;\n var _props = this.props,\n cols = _props.cols,\n preventCollision = _props.preventCollision;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Move the element here\n var isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, this.compactType(), cols);\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n var newLayout = (0, _utils.compact)(layout, this.compactType(), cols);\n var oldLayout = this.state.oldLayout;\n\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n };\n\n ReactGridLayout.prototype.onLayoutMaybeChanged = function onLayoutMaybeChanged(newLayout, oldLayout) {\n if (!oldLayout) oldLayout = this.state.layout;\n if (!(0, _lodash2.default)(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n };\n\n ReactGridLayout.prototype.onResizeStart = function onResizeStart(i, w, h, _ref4) {\n var e = _ref4.e,\n node = _ref4.node;\n var layout = this.state.layout;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n };\n\n ReactGridLayout.prototype.onResize = function onResize(i, w, h, _ref5) {\n var e = _ref5.e,\n node = _ref5.node;\n var _state = this.state,\n layout = _state.layout,\n oldResizeItem = _state.oldResizeItem;\n var _props2 = this.props,\n cols = _props2.cols,\n preventCollision = _props2.preventCollision;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n var hasCollisions = void 0;\n if (preventCollision) {\n var collisions = (0, _utils.getAllCollisions)(layout, _extends({}, l, { w: w, h: h })).filter(function (layoutItem) {\n return layoutItem.i !== l.i;\n });\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n var leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(function (layoutItem) {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: (0, _utils.compact)(layout, this.compactType(), cols),\n activeDrag: placeholder\n });\n };\n\n ReactGridLayout.prototype.onResizeStop = function onResizeStop(i, w, h, _ref6) {\n var e = _ref6.e,\n node = _ref6.node;\n var _state2 = this.state,\n layout = _state2.layout,\n oldResizeItem = _state2.oldResizeItem;\n var cols = this.props.cols;\n\n var l = (0, _utils.getLayoutItem)(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n var newLayout = (0, _utils.compact)(layout, this.compactType(), cols);\n var oldLayout = this.state.oldLayout;\n\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n };\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n\n\n ReactGridLayout.prototype.placeholder = function placeholder() {\n var activeDrag = this.state.activeDrag;\n\n if (!activeDrag) return null;\n var _props3 = this.props,\n width = _props3.width,\n cols = _props3.cols,\n margin = _props3.margin,\n containerPadding = _props3.containerPadding,\n rowHeight = _props3.rowHeight,\n maxRows = _props3.maxRows,\n useCSSTransforms = _props3.useCSSTransforms;\n\n // {...this.state.activeDrag} is pretty slow, actually\n\n return _react2.default.createElement(\n _GridItem2.default,\n {\n w: activeDrag.w,\n h: activeDrag.h,\n x: activeDrag.x,\n y: activeDrag.y,\n i: activeDrag.i,\n className: \"react-grid-placeholder\",\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n isDraggable: false,\n isResizable: false,\n useCSSTransforms: useCSSTransforms\n },\n _react2.default.createElement(\"div\", null)\n );\n };\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n\n\n ReactGridLayout.prototype.processGridItem = function processGridItem(child) {\n if (!child || !child.key) return;\n var l = (0, _utils.getLayoutItem)(this.state.layout, String(child.key));\n if (!l) return null;\n var _props4 = this.props,\n width = _props4.width,\n cols = _props4.cols,\n margin = _props4.margin,\n containerPadding = _props4.containerPadding,\n rowHeight = _props4.rowHeight,\n maxRows = _props4.maxRows,\n isDraggable = _props4.isDraggable,\n isResizable = _props4.isResizable,\n useCSSTransforms = _props4.useCSSTransforms,\n draggableCancel = _props4.draggableCancel,\n draggableHandle = _props4.draggableHandle;\n var mounted = this.state.mounted;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n\n var draggable = Boolean(!l.static && isDraggable && (l.isDraggable || l.isDraggable == null));\n var resizable = Boolean(!l.static && isResizable && (l.isResizable || l.isResizable == null));\n\n return _react2.default.createElement(\n _GridItem2.default,\n {\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n cancel: draggableCancel,\n handle: draggableHandle,\n onDragStop: this.onDragStop,\n onDragStart: this.onDragStart,\n onDrag: this.onDrag,\n onResizeStart: this.onResizeStart,\n onResize: this.onResize,\n onResizeStop: this.onResizeStop,\n isDraggable: draggable,\n isResizable: resizable,\n useCSSTransforms: useCSSTransforms && mounted,\n usePercentages: !mounted,\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n i: l.i,\n minH: l.minH,\n minW: l.minW,\n maxH: l.maxH,\n maxW: l.maxW,\n \"static\": l.static\n },\n child\n );\n };\n\n ReactGridLayout.prototype.render = function render() {\n var _this2 = this;\n\n var _props5 = this.props,\n className = _props5.className,\n style = _props5.style;\n\n\n var mergedClassName = (0, _classnames2.default)(\"react-grid-layout\", className);\n var mergedStyle = _extends({\n height: this.containerHeight()\n }, style);\n\n return _react2.default.createElement(\n \"div\",\n { className: mergedClassName, style: mergedStyle },\n _react2.default.Children.map(this.props.children, function (child) {\n return _this2.processGridItem(child);\n }),\n this.placeholder()\n );\n };\n\n return ReactGridLayout;\n}(_react2.default.Component);\n\nReactGridLayout.displayName = \"ReactGridLayout\";\nReactGridLayout.propTypes = {\n //\n // Basic props\n //\n className: _propTypes2.default.string,\n style: _propTypes2.default.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: _propTypes2.default.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: _propTypes2.default.bool,\n // # of cols.\n cols: _propTypes2.default.number,\n\n // A selector that will not be draggable.\n draggableCancel: _propTypes2.default.string,\n // A selector for the draggable handler\n draggableHandle: _propTypes2.default.string,\n\n // Deprecated\n verticalCompact: function verticalCompact(props) {\n if (props.verticalCompact === false && \"production\" !== \"production\") {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" + 'Use `compactType`: \"horizontal\" | \"vertical\" | null.');\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: _propTypes2.default.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function layout(props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n (0, _utils.validateLayout)(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: _propTypes2.default.arrayOf(_propTypes2.default.number),\n // Padding inside the container [x, y] in px\n containerPadding: _propTypes2.default.arrayOf(_propTypes2.default.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: _propTypes2.default.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: _propTypes2.default.number,\n\n //\n // Flags\n //\n isDraggable: _propTypes2.default.bool,\n isResizable: _propTypes2.default.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: _propTypes2.default.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes2.default.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: _propTypes2.default.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: _propTypes2.default.func,\n // Calls on each drag movement.\n onDrag: _propTypes2.default.func,\n // Calls when drag is complete.\n onDragStop: _propTypes2.default.func,\n //Calls when resize starts.\n onResizeStart: _propTypes2.default.func,\n // Calls when resize movement happens.\n onResize: _propTypes2.default.func,\n // Calls when resize is complete.\n onResizeStop: _propTypes2.default.func,\n\n //\n // Other validations\n //\n\n // Children must not have duplicate keys.\n children: function children(props, propName) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n _react2.default.Children.forEach(children, function (child) {\n if (keys[child.key]) {\n throw new Error('Duplicate child key \"' + child.key + '\" found! This will cause problems in ReactGridLayout.');\n }\n keys[child.key] = true;\n });\n }\n};\nReactGridLayout.defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n onLayoutChange: _utils.noop,\n onDragStart: _utils.noop,\n onDrag: _utils.noop,\n onDragStop: _utils.noop,\n onResizeStart: _utils.noop,\n onResize: _utils.noop,\n onResizeStop: _utils.noop\n};\n\nvar _initialiseProps = function _initialiseProps() {\n this.state = {\n activeDrag: null,\n layout: (0, _utils.synchronizeLayoutWithChildren)(this.props.layout, this.props.children, this.props.cols,\n // Legacy support for verticalCompact: false\n this.compactType()),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null\n };\n};\n\nexports.default = ReactGridLayout;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(7), __webpack_require__(0));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react-dom\", \"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react-dom\"), require(\"react\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"ReactDOM\"], root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) {\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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 12);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/ {\n for (var i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func /*: any*/) /*: boolean*/ {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num /*: any*/) /*: boolean*/ {\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a /*: string*/) /*: number*/ {\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) {\n if (props[propName]) {\n return new Error('Invalid prop ' + propName + ' passed to ' + componentName + ' - do not set this, set it on the child.');\n }\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = __webpack_require__(0);\n\nvar _getPrefix = __webpack_require__(19);\n\nvar _getPrefix2 = _interopRequireDefault(_getPrefix);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*:: import type {ControlPosition, MouseTouchEvent} from './types';*/\n\n\nvar matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ {\n var node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n if (!el) {\n return;\n }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n if (!el) {\n return;\n }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/ {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/ {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/ {\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/ {\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: {clientX: number, clientY: number}*/, offsetParent /*: HTMLElement*/) /*: ControlPosition*/ {\n var isBody = offsetParent === offsetParent.ownerDocument.body;\n var offsetParentRect = isBody ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect();\n\n var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return { x: x, y: y };\n}\n\nfunction createCSSTransform(_ref) /*: Object*/ {\n var x = _ref.x,\n y = _ref.y;\n\n // Replace unitless items with px\n return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix2.default), 'translate(' + x + 'px,' + y + 'px)');\n}\n\nfunction createSVGTransform(_ref3) /*: string*/ {\n var x = _ref3.x,\n y = _ref3.y;\n\n return 'translate(' + x + ',' + y + ')';\n}\n\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ {\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n return identifier === t.identifier;\n }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n return identifier === t.identifier;\n });\n}\n\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/ {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n var styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nfunction styleHacks() /*: Object*/ {\n var childStyle /*: Object*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return _extends({\n touchAction: 'none'\n }, childStyle);\n}\n\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp('(?:^|\\\\s)' + className + '(?!\\\\S)'))) {\n el.className += ' ' + className;\n }\n }\n}\n\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(?:^|\\\\s)' + className + '(?!\\\\S)', 'g'), '');\n }\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(14)(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(17)();\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\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 (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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 warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = __webpack_require__(0);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domFns = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n var bounds = draggable.props.bounds;\n\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n var node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n var ownerDocument = node.ownerDocument;\n\n var ownerWindow = ownerDocument.defaultView;\n var boundNode = void 0;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n var nodeStyle = ownerWindow.getComputedStyle(node);\n var boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ {\n var x = Math.round(pendingX / grid[0]) * grid[0];\n var y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/ {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/ {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ {\n var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n var node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ {\n var state = draggable.state;\n var isStart = !(0, _shims.isNum)(state.lastX);\n var node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node: node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x: x, y: y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node: node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x: x, y: y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/ {\n var node = _reactDom2.default.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(7);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domFns = __webpack_require__(5);\n\nvar _positionFns = __webpack_require__(9);\n\nvar _shims = __webpack_require__(0);\n\nvar _log = __webpack_require__(11);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n\n\n// Simple abstraction for dragging events names.\n/*:: import type {Element as ReactElement} from 'react';*/\nvar eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nvar dragEventFor = eventsFor.mouse;\n\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\nvar DraggableCore = function (_React$Component) {\n _inherits(DraggableCore, _React$Component);\n\n function DraggableCore() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DraggableCore);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DraggableCore.__proto__ || Object.getPrototypeOf(DraggableCore)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n }, _this.handleDragStart = function (e) {\n // Make it possible to attach event handlers on top of this one.\n _this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n var thisNode = _reactDom2.default.findDOMNode(_this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n var ownerDocument = thisNode.ownerDocument;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n _this.setState({ touchIdentifier: touchIdentifier });\n\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this);\n if (position == null) return; // not possible but satisfies flow\n var x = position.x,\n y = position.y;\n\n // Create an event object with all the data parents need to make a decision here.\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n (0, _log2.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log2.default)('calling', _this.props.onStart);\n var shouldUpdate = _this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n _this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }, _this.handleDrag = function (e) {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n if (position == null) return;\n var x = position.x,\n y = position.y;\n\n // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var _deltaX = x - _this.state.lastX,\n _deltaY = y - _this.state.lastY;\n\n var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, _deltaX, _deltaY);\n\n var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n _deltaX = _snapToGrid2[0];\n _deltaY = _snapToGrid2[1];\n\n if (!_deltaX && !_deltaY) return; // skip useless drag\n x = _this.state.lastX + _deltaX, y = _this.state.lastY + _deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n (0, _log2.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n var shouldUpdate = _this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n _this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n var event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n _this.handleDragStop(event);\n }\n return;\n }\n\n _this.setState({\n lastX: x,\n lastY: y\n });\n }, _this.handleDragStop = function (e) {\n if (!_this.state.dragging) return;\n\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n if (position == null) return;\n var x = position.x,\n y = position.y;\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n var thisNode = _reactDom2.default.findDOMNode(_this);\n if (thisNode) {\n // Remove user-select hack\n if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log2.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n _this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n _this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log2.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }\n }, _this.onMouseDown = function (e) {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return _this.handleDragStart(e);\n }, _this.onMouseUp = function (e) {\n dragEventFor = eventsFor.mouse;\n\n return _this.handleDragStop(e);\n }, _this.onTouchStart = function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return _this.handleDragStart(e);\n }, _this.onTouchEnd = function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return _this.handleDragStop(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DraggableCore, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n var thisNode = _reactDom2.default.findDOMNode(this);\n if (thisNode) {\n var ownerDocument = thisNode.ownerDocument;\n\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n\n }, {\n key: 'render',\n value: function render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n }]);\n\n return DraggableCore;\n}(_react2.default.Component);\n\nDraggableCore.displayName = 'DraggableCore';\nDraggableCore.propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes2.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes2.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes2.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function offsetParent(props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes2.default.arrayOf(_propTypes2.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    \n *
    Click me to drag
    \n *
    This is some other content
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n handle: _propTypes2.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
    \n *
    You can't drag from here
    \n *
    Dragging here works fine
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes2.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes2.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes2.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes2.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n};\nDraggableCore.defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function onStart() {},\n onDrag: function onDrag() {},\n onStop: function onStop() {},\n onMouseDown: function onMouseDown() {}\n};\nexports.default = DraggableCore;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n var _console;\n\n if (undefined) (_console = console).log.apply(_console, arguments);\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Draggable = __webpack_require__(13).default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = __webpack_require__(10).default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(7);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _classnames = __webpack_require__(18);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _domFns = __webpack_require__(5);\n\nvar _positionFns = __webpack_require__(9);\n\nvar _shims = __webpack_require__(0);\n\nvar _DraggableCore = __webpack_require__(10);\n\nvar _DraggableCore2 = _interopRequireDefault(_DraggableCore);\n\nvar _log = __webpack_require__(11);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: import type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';*/\n/*:: import type {DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};*/\n\n\n//\n// Define \n//\n\n/*:: export type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};*/\n\nvar Draggable = function (_React$Component) {\n _inherits(Draggable, _React$Component);\n\n function Draggable(props /*: DraggableProps*/) {\n _classCallCheck(this, Draggable);\n\n var _this = _possibleConstructorReturn(this, (Draggable.__proto__ || Object.getPrototypeOf(Draggable)).call(this, props));\n\n _this.onDragStart = function (e, coreData) {\n (0, _log2.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n _this.setState({ dragging: true, dragged: true });\n };\n\n _this.onDrag = function (e, coreData) {\n if (!_this.state.dragging) return false;\n (0, _log2.default)('Draggable: onDrag: %j', coreData);\n\n var uiData = (0, _positionFns.createDraggableData)(_this, coreData);\n\n var newState /*: $Shape*/ = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (_this.props.bounds) {\n // Save original x and y.\n var _x = newState.x,\n _y = newState.y;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += _this.state.slackX;\n newState.y += _this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y),\n _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n newStateX = _getBoundPosition2[0],\n newStateY = _getBoundPosition2[1];\n\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = _this.state.slackX + (_x - newState.x);\n newState.slackY = _this.state.slackY + (_y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - _this.state.x;\n uiData.deltaY = newState.y - _this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n var shouldUpdate = _this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n _this.setState(newState);\n };\n\n _this.onDragStop = function (e, coreData) {\n if (!_this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData));\n if (shouldStop === false) return false;\n\n (0, _log2.default)('Draggable: onDragStop: %j', coreData);\n\n var newState /*: $Shape*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n var controlled = Boolean(_this.props.position);\n if (controlled) {\n var _this$props$position = _this.props.position,\n _x2 = _this$props$position.x,\n _y2 = _this$props$position.y;\n\n newState.x = _x2;\n newState.y = _y2;\n }\n\n _this.setState(newState);\n };\n\n _this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n return _this;\n }\n\n _createClass(Draggable, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom2.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps /*: Object*/) {\n // Set x/y if position has changed\n if (nextProps.position && (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.setState({ dragging: false }); // prevents invariant if unmounted while dragging\n }\n }, {\n key: 'render',\n value: function render() /*: ReactElement*/ {\n var _classNames;\n\n var style = {},\n svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n var controlled = Boolean(this.props.position);\n var draggable = !controlled || this.state.dragging;\n\n var position = this.props.position || this.props.defaultPosition;\n var transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : position.x,\n\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts);\n }\n\n var _props = this.props,\n defaultClassName = _props.defaultClassName,\n defaultClassNameDragging = _props.defaultClassNameDragging,\n defaultClassNameDragged = _props.defaultClassNameDragged;\n\n\n var children = _react2.default.Children.only(this.props.children);\n\n // Mark with class while dragging\n var className = (0, _classnames2.default)(children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames));\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react2.default.createElement(\n _DraggableCore2.default,\n _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }),\n _react2.default.cloneElement(children, {\n className: className,\n style: _extends({}, children.props.style, style),\n transform: svgTransform\n })\n );\n }\n }]);\n\n return Draggable;\n}(_react2.default.Component);\n\nDraggable.displayName = 'Draggable';\nDraggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, {\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    Content
    \n *
    \n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes2.default.oneOfType([_propTypes2.default.shape({\n left: _propTypes2.default.number,\n right: _propTypes2.default.number,\n top: _propTypes2.default.number,\n bottom: _propTypes2.default.number\n }), _propTypes2.default.string, _propTypes2.default.oneOf([false])]),\n\n defaultClassName: _propTypes2.default.string,\n defaultClassNameDragging: _propTypes2.default.string,\n defaultClassNameDragged: _propTypes2.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes2.default.shape({\n x: _propTypes2.default.number,\n y: _propTypes2.default.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n position: _propTypes2.default.shape({\n x: _propTypes2.default.number,\n y: _propTypes2.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\nDraggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, {\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: { x: 0, y: 0 },\n position: null\n});\nexports.default = Draggable;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\nvar invariant = __webpack_require__(2);\nvar warning = __webpack_require__(8);\nvar assign = __webpack_require__(15);\n\nvar ReactPropTypesSecret = __webpack_require__(3);\nvar checkPropTypes = __webpack_require__(16);\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var invariant = __webpack_require__(2);\n var warning = __webpack_require__(8);\n var ReactPropTypesSecret = __webpack_require__(3);\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\nvar invariant = __webpack_require__(2);\nvar ReactPropTypesSecret = __webpack_require__(3);\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\treturn classNames;\n\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/ {\n var prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n var style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (var i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n return prefix ? '' + prefix + kebabToTitleCase(prop) : prop;\n}\n\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n return prefix ? '-' + prefix.toLowerCase() + '-' + prop : prop;\n}\n\nfunction kebabToTitleCase(str /*: string*/) /*: string*/ {\n var out = '';\n var shouldCapitalize = true;\n for (var i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexports.default = getPrefix();\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=react-draggable.js.map\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_7__;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDraggable = __webpack_require__(6);\n\nvar _cloneElement = __webpack_require__(19);\n\nvar _cloneElement2 = _interopRequireDefault(_cloneElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Resizable = function (_React$Component) {\n _inherits(Resizable, _React$Component);\n\n function Resizable() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Resizable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n resizing: false,\n width: _this.props.width, height: _this.props.height,\n slackW: 0, slackH: 0\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // If parent changes height/width, set that in our state.\n if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) {\n this.setState({\n width: nextProps.width,\n height: nextProps.height\n });\n }\n };\n\n Resizable.prototype.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n };\n\n // If you do this, be careful of constraints\n\n\n Resizable.prototype.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n\n\n if (this.props.lockAspectRatio) {\n var ratio = this.state.width / this.state.height;\n height = width / ratio;\n width = height * ratio;\n }\n\n if (!min && !max) return [width, height];\n\n var oldW = width,\n oldH = height;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _state = this.state,\n slackW = _state.slackW,\n slackH = _state.slackH;\n\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n }\n\n // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n slackW += oldW - width;\n slackH += oldH - height;\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({ slackW: slackW, slackH: slackH });\n }\n\n return [width, height];\n };\n\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n\n\n Resizable.prototype.resizeHandler = function resizeHandler(handlerName) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n\n\n // Axis restrictions\n var canDragX = _this2.props.axis === 'both' || _this2.props.axis === 'x';\n var canDragY = _this2.props.axis === 'both' || _this2.props.axis === 'y';\n\n // Update w/h\n var width = _this2.state.width + (canDragX ? deltaX : 0);\n var height = _this2.state.height + (canDragY ? deltaY : 0);\n\n // Early return if no change\n var widthChanged = width !== _this2.state.width,\n heightChanged = height !== _this2.state.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n // Set the appropriate state for this handler.\n var _runConstraints = _this2.runConstraints(width, height);\n\n width = _runConstraints[0];\n height = _runConstraints[1];\n var newState = {};\n if (handlerName === 'onResizeStart') {\n newState.resizing = true;\n } else if (handlerName === 'onResizeStop') {\n newState.resizing = false;\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.state.width && height === _this2.state.height) return;\n newState.width = width;\n newState.height = height;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n if (hasCb) {\n if (typeof e.persist === 'function') e.persist();\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, { node: node, size: { width: width, height: height } });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n Resizable.prototype.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n children = _props.children,\n draggableOpts = _props.draggableOpts,\n width = _props.width,\n height = _props.height,\n handleSize = _props.handleSize,\n lockAspectRatio = _props.lockAspectRatio,\n axis = _props.axis,\n minConstraints = _props.minConstraints,\n maxConstraints = _props.maxConstraints,\n onResize = _props.onResize,\n onResizeStop = _props.onResizeStop,\n onResizeStart = _props.onResizeStart,\n p = _objectWithoutProperties(_props, ['children', 'draggableOpts', 'width', 'height', 'handleSize', 'lockAspectRatio', 'axis', 'minConstraints', 'maxConstraints', 'onResize', 'onResizeStop', 'onResizeStart']);\n\n var className = p.className ? p.className + ' react-resizable' : 'react-resizable';\n\n // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // Its original children (resizable's child's children), and\n // A draggable handle.\n return (0, _cloneElement2.default)(children, _extends({}, p, {\n className: className,\n children: [children.props.children, _react2.default.createElement(\n _reactDraggable.DraggableCore,\n _extends({}, draggableOpts, {\n key: 'resizableHandle',\n onStop: this.resizeHandler('onResizeStop'),\n onStart: this.resizeHandler('onResizeStart'),\n onDrag: this.resizeHandler('onResize')\n }),\n _react2.default.createElement('span', { className: 'react-resizable-handle' })\n )]\n }));\n };\n\n return Resizable;\n}(_react2.default.Component);\n\nResizable.propTypes = {\n //\n // Required Props\n //\n\n // Require that one and only one child be present.\n children: _propTypes2.default.element.isRequired,\n\n // Initial w/h\n width: _propTypes2.default.number.isRequired,\n height: _propTypes2.default.number.isRequired,\n\n //\n // Optional props\n //\n\n // If you change this, be sure to update your css\n handleSize: _propTypes2.default.array,\n\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes2.default.bool,\n\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']),\n\n // Min/max size\n minConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number),\n maxConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number),\n\n // Callbacks\n onResizeStop: _propTypes2.default.func,\n onResizeStart: _propTypes2.default.func,\n onResize: _propTypes2.default.func,\n\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes2.default.object\n};\nResizable.defaultProps = {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity]\n};\nexports.default = Resizable;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getBreakpointFromWidth = getBreakpointFromWidth;\nexports.getColsFromBreakpoint = getColsFromBreakpoint;\nexports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\nexports.sortBreakpoints = sortBreakpoints;\n\nvar _utils = __webpack_require__(2);\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 */\nfunction getBreakpointFromWidth(breakpoints, width) {\n var sorted = 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 * 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\n\nfunction 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 {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nfunction findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols, compactType) {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]);\n // Find or generate the next layout\n var layout = layouts[lastBreakpoint];\n var breakpointsSorted = 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 = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n return (0, _utils.compact)((0, _utils.correctBounds)(layout, { cols: cols }), compactType, cols);\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 */\nfunction 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/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(4).default;\nmodule.exports.utils = __webpack_require__(2);\nmodule.exports.Responsive = __webpack_require__(21).default;\nmodule.exports.Responsive.utils = __webpack_require__(9);\nmodule.exports.WidthProvider = __webpack_require__(22).default;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(12);\nvar invariant = __webpack_require__(13);\nvar ReactPropTypesSecret = __webpack_require__(14);\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDraggable = __webpack_require__(6);\n\nvar _reactResizable = __webpack_require__(18);\n\nvar _utils = __webpack_require__(2);\n\nvar _classnames = __webpack_require__(5);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * An individual item within a ReactGridLayout.\n */\nvar GridItem = function (_React$Component) {\n _inherits(GridItem, _React$Component);\n\n function GridItem() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, GridItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n resizing: null,\n dragging: null,\n className: \"\"\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n // Helper for generating column width\n GridItem.prototype.calcColWidth = function calcColWidth() {\n var _props = this.props,\n margin = _props.margin,\n containerPadding = _props.containerPadding,\n containerWidth = _props.containerWidth,\n cols = _props.cols;\n\n return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;\n };\n\n /**\n * Return position on the page given an x, y, w, h.\n * left, top, width, height are all in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} Object containing coords.\n */\n\n\n GridItem.prototype.calcPosition = function calcPosition(x, y, w, h, state) {\n var _props2 = this.props,\n margin = _props2.margin,\n containerPadding = _props2.containerPadding,\n rowHeight = _props2.rowHeight;\n\n var colWidth = this.calcColWidth();\n\n var out = {\n left: Math.round((colWidth + margin[0]) * x + containerPadding[0]),\n top: Math.round((rowHeight + margin[1]) * y + containerPadding[1]),\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]),\n height: h === Infinity ? h : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1])\n };\n\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n\n return out;\n };\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n\n\n GridItem.prototype.calcXY = function calcXY(top, left) {\n var _props3 = this.props,\n margin = _props3.margin,\n cols = _props3.cols,\n rowHeight = _props3.rowHeight,\n w = _props3.w,\n h = _props3.h,\n maxRows = _props3.maxRows;\n\n var colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n var x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n var y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x: x, y: y };\n };\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n\n\n GridItem.prototype.calcWH = function calcWH(_ref) {\n var height = _ref.height,\n width = _ref.width;\n var _props4 = this.props,\n margin = _props4.margin,\n maxRows = _props4.maxRows,\n cols = _props4.cols,\n rowHeight = _props4.rowHeight,\n x = _props4.x,\n y = _props4.y;\n\n var colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n var w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n var h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w: w, h: h };\n };\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n\n\n GridItem.prototype.createStyle = function createStyle(pos) {\n var _props5 = this.props,\n usePercentages = _props5.usePercentages,\n containerWidth = _props5.containerWidth,\n useCSSTransforms = _props5.useCSSTransforms;\n\n\n var style = void 0;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = (0, _utils.setTransform)(pos);\n } else {\n // top,left (slow)\n style = (0, _utils.setTopLeft)(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = (0, _utils.perc)(pos.left / containerWidth);\n style.width = (0, _utils.perc)(pos.width / containerWidth);\n }\n }\n\n return style;\n };\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n\n\n GridItem.prototype.mixinDraggable = function mixinDraggable(child) {\n return _react2.default.createElement(\n _reactDraggable.DraggableCore,\n {\n onStart: this.onDragHandler(\"onDragStart\"),\n onDrag: this.onDragHandler(\"onDrag\"),\n onStop: this.onDragHandler(\"onDragStop\"),\n handle: this.props.handle,\n cancel: \".react-resizable-handle\" + (this.props.cancel ? \",\" + this.props.cancel : \"\")\n },\n child\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\n\n GridItem.prototype.mixinResizable = function mixinResizable(child, position) {\n var _props6 = this.props,\n cols = _props6.cols,\n x = _props6.x,\n minW = _props6.minW,\n minH = _props6.minH,\n maxW = _props6.maxW,\n maxH = _props6.maxH;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n\n var maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n var mins = this.calcPosition(0, 0, minW, minH);\n var maxes = this.calcPosition(0, 0, maxW, maxH);\n var minConstraints = [mins.width, mins.height];\n var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n return _react2.default.createElement(\n _reactResizable.Resizable,\n {\n width: position.width,\n height: position.height,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n onResizeStop: this.onResizeHandler(\"onResizeStop\"),\n onResizeStart: this.onResizeHandler(\"onResizeStart\"),\n onResize: this.onResizeHandler(\"onResize\")\n },\n child\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\n\n GridItem.prototype.onDragHandler = function onDragHandler(handlerName) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n\n var handler = _this2.props[handlerName];\n if (!handler) return;\n\n var newPosition = { top: 0, left: 0 };\n\n // Get new XY\n switch (handlerName) {\n case \"onDragStart\":\n {\n // TODO: this wont work on nested parents\n var offsetParent = node.offsetParent;\n\n if (!offsetParent) return;\n var parentRect = offsetParent.getBoundingClientRect();\n var clientRect = node.getBoundingClientRect();\n newPosition.left = clientRect.left - parentRect.left + offsetParent.scrollLeft;\n newPosition.top = clientRect.top - parentRect.top + offsetParent.scrollTop;\n _this2.setState({ dragging: newPosition });\n break;\n }\n case \"onDrag\":\n if (!_this2.state.dragging) throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = _this2.state.dragging.left + deltaX;\n newPosition.top = _this2.state.dragging.top + deltaY;\n _this2.setState({ dragging: newPosition });\n break;\n case \"onDragStop\":\n if (!_this2.state.dragging) throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = _this2.state.dragging.left;\n newPosition.top = _this2.state.dragging.top;\n _this2.setState({ dragging: null });\n break;\n default:\n throw new Error(\"onDragHandler called with unrecognized handlerName: \" + handlerName);\n }\n\n var _calcXY = _this2.calcXY(newPosition.top, newPosition.left),\n x = _calcXY.x,\n y = _calcXY.y;\n\n return handler.call(_this2, _this2.props.i, x, y, { e: e, node: node, newPosition: newPosition });\n };\n };\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n\n\n GridItem.prototype.onResizeHandler = function onResizeHandler(handlerName) {\n var _this3 = this;\n\n return function (e, _ref3) {\n var node = _ref3.node,\n size = _ref3.size;\n\n var handler = _this3.props[handlerName];\n if (!handler) return;\n var _props7 = _this3.props,\n cols = _props7.cols,\n x = _props7.x,\n i = _props7.i,\n maxW = _props7.maxW,\n minW = _props7.minW,\n maxH = _props7.maxH,\n minH = _props7.minH;\n\n // Get new XY\n\n var _calcWH = _this3.calcWH(size),\n w = _calcWH.w,\n h = _calcWH.h;\n\n // Cap w at numCols\n\n\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n _this3.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(_this3, i, w, h, { e: e, node: node, size: size });\n };\n };\n\n GridItem.prototype.render = function render() {\n var _props8 = this.props,\n x = _props8.x,\n y = _props8.y,\n w = _props8.w,\n h = _props8.h,\n isDraggable = _props8.isDraggable,\n isResizable = _props8.isResizable,\n useCSSTransforms = _props8.useCSSTransforms;\n\n\n var pos = this.calcPosition(x, y, w, h, this.state);\n var child = _react2.default.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n var newChild = _react2.default.cloneElement(child, {\n className: (0, _classnames2.default)(\"react-grid-item\", child.props.className, this.props.className, {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n cssTransforms: useCSSTransforms\n }),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: _extends({}, this.props.style, child.props.style, this.createStyle(pos))\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n };\n\n return GridItem;\n}(_react2.default.Component);\n\nGridItem.propTypes = {\n // Children must be only a single element\n children: _propTypes2.default.element,\n\n // General grid attributes\n cols: _propTypes2.default.number.isRequired,\n containerWidth: _propTypes2.default.number.isRequired,\n rowHeight: _propTypes2.default.number.isRequired,\n margin: _propTypes2.default.array.isRequired,\n maxRows: _propTypes2.default.number.isRequired,\n containerPadding: _propTypes2.default.array.isRequired,\n\n // These are all in grid units\n x: _propTypes2.default.number.isRequired,\n y: _propTypes2.default.number.isRequired,\n w: _propTypes2.default.number.isRequired,\n h: _propTypes2.default.number.isRequired,\n\n // All optional\n minW: function minW(props, propName) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW) return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function maxW(props, propName) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW) return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function minH(props, propName) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH) return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function maxH(props, propName) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH) return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: _propTypes2.default.string.isRequired,\n\n // Functions\n onDragStop: _propTypes2.default.func,\n onDragStart: _propTypes2.default.func,\n onDrag: _propTypes2.default.func,\n onResizeStop: _propTypes2.default.func,\n onResizeStart: _propTypes2.default.func,\n onResize: _propTypes2.default.func,\n\n // Flags\n isDraggable: _propTypes2.default.bool.isRequired,\n isResizable: _propTypes2.default.bool.isRequired,\n static: _propTypes2.default.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes2.default.bool.isRequired,\n\n // Others\n className: _propTypes2.default.string,\n // Selector for draggable handle\n handle: _propTypes2.default.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: _propTypes2.default.string\n};\nGridItem.defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity\n};\nexports.default = GridItem;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = __webpack_require__(8).default;\nmodule.exports.ResizableBox = __webpack_require__(20).default;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nmodule.exports = function cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _extends({}, element.props.style, props.style);\n }\n if (props.className && element.props.className) {\n props.className = element.props.className + ' ' + props.className;\n }\n return _react2.default.cloneElement(element, props);\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Resizable = __webpack_require__(8);\n\nvar _Resizable2 = _interopRequireDefault(_Resizable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// An example use of Resizable.\nvar ResizableBox = function (_React$Component) {\n _inherits(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResizableBox);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n width: _this.props.width,\n height: _this.props.height\n }, _this.onResize = function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n ResizableBox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) {\n this.setState({\n width: nextProps.width,\n height: nextProps.height\n });\n }\n };\n\n ResizableBox.prototype.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _props = this.props,\n handleSize = _props.handleSize,\n onResize = _props.onResize,\n onResizeStart = _props.onResizeStart,\n onResizeStop = _props.onResizeStop,\n draggableOpts = _props.draggableOpts,\n minConstraints = _props.minConstraints,\n maxConstraints = _props.maxConstraints,\n lockAspectRatio = _props.lockAspectRatio,\n axis = _props.axis,\n width = _props.width,\n height = _props.height,\n props = _objectWithoutProperties(_props, ['handleSize', 'onResize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'axis', 'width', 'height']);\n\n return _react2.default.createElement(\n _Resizable2.default,\n {\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis\n },\n _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props))\n );\n };\n\n return ResizableBox;\n}(_react2.default.Component);\n\nResizableBox.propTypes = {\n height: _propTypes2.default.number,\n width: _propTypes2.default.number\n};\nResizableBox.defaultProps = {\n handleSize: [20, 20]\n};\nexports.default = ResizableBox;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lodash = __webpack_require__(3);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _utils = __webpack_require__(2);\n\nvar _responsiveUtils = __webpack_require__(9);\n\nvar _ReactGridLayout = __webpack_require__(4);\n\nvar _ReactGridLayout2 = _interopRequireDefault(_ReactGridLayout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar type = function type(obj) {\n return Object.prototype.toString.call(obj);\n};\n\nvar ResponsiveReactGridLayout = function (_React$Component) {\n _inherits(ResponsiveReactGridLayout, _React$Component);\n\n function ResponsiveReactGridLayout() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResponsiveReactGridLayout);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = _this.generateInitialState(), _this.onLayoutChange = function (layout) {\n var _extends2;\n\n _this.props.onLayoutChange(layout, _extends({}, _this.props.layouts, (_extends2 = {}, _extends2[_this.state.breakpoint] = layout, _extends2)));\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n\n\n ResponsiveReactGridLayout.prototype.generateInitialState = function generateInitialState() {\n var _props = this.props,\n width = _props.width,\n breakpoints = _props.breakpoints,\n layouts = _props.layouts,\n cols = _props.cols;\n\n var breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n var colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n var compactType = this.props.verticalCompact === false ? null : this.props.compactType;\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 = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType);\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n };\n\n ResponsiveReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // Allow parent to set width or breakpoint directly.\n if (nextProps.width != this.props.width || nextProps.breakpoint !== this.props.breakpoint || !(0, _lodash2.default)(nextProps.breakpoints, this.props.breakpoints) || !(0, _lodash2.default)(nextProps.cols, this.props.cols)) {\n this.onWidthChange(nextProps);\n } else if (!(0, _lodash2.default)(nextProps.layouts, this.props.layouts)) {\n // Allow parent to set layouts directly.\n var _state = this.state,\n _breakpoint = _state.breakpoint,\n _cols = _state.cols;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n\n var newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, _breakpoint, _breakpoint, _cols, nextProps.compactType);\n this.setState({ layout: newLayout });\n }\n };\n\n // wrap layouts so we do not need to pass layouts to child\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 ResponsiveReactGridLayout.prototype.onWidthChange = function onWidthChange(nextProps) {\n var breakpoints = nextProps.breakpoints,\n cols = nextProps.cols,\n layouts = nextProps.layouts,\n compactType = nextProps.compactType;\n\n var newBreakpoint = nextProps.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(nextProps.breakpoints, nextProps.width);\n\n var lastBreakpoint = this.state.breakpoint;\n\n // Breakpoint change\n if (lastBreakpoint !== newBreakpoint || this.props.breakpoints !== breakpoints || this.props.cols !== cols) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts)) layouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout);\n\n // Find or generate a new layout.\n var newCols = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n var _layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType);\n\n // This adds missing items.\n _layout = (0, _utils.synchronizeLayoutWithChildren)(_layout, nextProps.children, newCols, compactType);\n\n // Store the new layout.\n layouts[newBreakpoint] = _layout;\n\n // callbacks\n this.props.onLayoutChange(_layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n this.props.onWidthChange(nextProps.width, nextProps.margin, newCols, nextProps.containerPadding);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: _layout,\n cols: newCols\n });\n }\n };\n\n ResponsiveReactGridLayout.prototype.render = function render() {\n /* eslint-disable no-unused-vars */\n var _props2 = this.props,\n breakpoint = _props2.breakpoint,\n breakpoints = _props2.breakpoints,\n cols = _props2.cols,\n layouts = _props2.layouts,\n onBreakpointChange = _props2.onBreakpointChange,\n onLayoutChange = _props2.onLayoutChange,\n onWidthChange = _props2.onWidthChange,\n other = _objectWithoutProperties(_props2, [\"breakpoint\", \"breakpoints\", \"cols\", \"layouts\", \"onBreakpointChange\", \"onLayoutChange\", \"onWidthChange\"]);\n /* eslint-enable no-unused-vars */\n\n return _react2.default.createElement(_ReactGridLayout2.default, _extends({}, other, {\n onLayoutChange: this.onLayoutChange,\n layout: this.state.layout,\n cols: this.state.cols\n }));\n };\n\n return ResponsiveReactGridLayout;\n}(_react2.default.Component);\n\nResponsiveReactGridLayout.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: _propTypes2.default.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: _propTypes2.default.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: _propTypes2.default.object,\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts: function layouts(props, propName) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\"Layout property must be an object. Received: \" + type(props[propName]));\n }\n Object.keys(props[propName]).forEach(function (key) {\n if (!(key in props.breakpoints)) {\n throw new Error(\"Each key in layouts must align with a key in breakpoints.\");\n }\n (0, _utils.validateLayout)(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: _propTypes2.default.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: _propTypes2.default.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: _propTypes2.default.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: _propTypes2.default.func\n};\nResponsiveReactGridLayout.defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n onBreakpointChange: _utils.noop,\n onLayoutChange: _utils.noop,\n onWidthChange: _utils.noop\n};\nexports.default = ResponsiveReactGridLayout;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = WidthProvider;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(7);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nfunction WidthProvider(ComposedComponent) {\n var _class, _temp2;\n\n return _temp2 = _class = function (_React$Component) {\n _inherits(WidthProvider, _React$Component);\n\n function WidthProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, WidthProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n width: 1280\n }, _this.mounted = false, _this.onWindowResize = function () {\n if (!_this.mounted) return;\n // eslint-disable-next-line\n var node = _reactDom2.default.findDOMNode(_this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement) _this.setState({ width: node.offsetWidth });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n WidthProvider.prototype.componentDidMount = function componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n };\n\n WidthProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n };\n\n WidthProvider.prototype.render = function render() {\n var _props = this.props,\n measureBeforeMount = _props.measureBeforeMount,\n rest = _objectWithoutProperties(_props, [\"measureBeforeMount\"]);\n\n if (measureBeforeMount && !this.mounted) {\n return _react2.default.createElement(\"div\", { className: this.props.className, style: this.props.style });\n }\n\n return _react2.default.createElement(ComposedComponent, _extends({}, rest, this.state));\n };\n\n return WidthProvider;\n }(_react2.default.Component), _class.defaultProps = {\n measureBeforeMount: false\n }, _class.propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: _propTypes2.default.bool\n }, _temp2;\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// react-grid-layout.min.js"," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ea671ef715fdb569cc44","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 0\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 1\n// module chunks = 0","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x: number,\n y: number,\n deltaX: number,\n deltaY: number,\n lastX: number,\n lastY: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1 === l2) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout.indexOf(item);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > (item.y + item.h)) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number,\n): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(`Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`);\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === 'number') l.x = x;\n if (typeof y === 'number') l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === 'number' ? oldY >= y\n : compactType === \"horizontal\" && typeof x === 'number' ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${\n collision.i\n } at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n const compactV = compactType === \"vertical\";\n const preventCollision = false; // we're already colliding\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${\n fakeItem.y\n }].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils.js","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.isequal/index.js\n// module id = 3\n// module chunks = 0","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n validateLayout,\n getAllCollisions,\n noop\n} from \"./utils\";\nimport GridItem from \"./GridItem\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n EventCallback,\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n Layout,\n LayoutItem\n} from \"./utils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem\n};\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: ?(\"horizontal\" | \"vertical\"),\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n children: ReactChildrenArray>\n};\n// End Types\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n\n //\n // Other validations\n //\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n useCSSTransforms: true,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n this.compactType()\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null\n };\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n componentWillReceiveProps(nextProps: Props) {\n let newLayoutBase;\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, this.props.layout) ||\n nextProps.compactType !== this.props.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(this.props.children, nextProps.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = this.state.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n this.compactType(nextProps)\n );\n const oldLayout = this.state.layout;\n this.setState({ layout: newLayout });\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n compactType(props: ?Object): CompactType {\n if (!props) props = this.props;\n return props.verticalCompact === false ? null : props.compactType;\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n this.compactType(),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, this.compactType(), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n this.compactType(),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, this.compactType(), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, this.compactType(), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, this.compactType(), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(child: ReactElement): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted } = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(\n !l.static && isDraggable && (l.isDraggable || l.isDraggable == null)\n );\n const resizable = Boolean(\n !l.static && isResizable && (l.isResizable || l.isResizable == null)\n );\n\n return (\n \n {child}\n \n );\n }\n\n render() {\n const { className, style } = this.props;\n\n const mergedClassName = classNames(\"react-grid-layout\", className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n
    \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {this.placeholder()}\n
    \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ReactGridLayout.jsx","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 5\n// module chunks = 0","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react-dom\"), require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react-dom\", \"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react-dom\"), require(\"react\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"ReactDOM\"], root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) {\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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 12);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/ {\n for (var i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func /*: any*/) /*: boolean*/ {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num /*: any*/) /*: boolean*/ {\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a /*: string*/) /*: number*/ {\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) {\n if (props[propName]) {\n return new Error('Invalid prop ' + propName + ' passed to ' + componentName + ' - do not set this, set it on the child.');\n }\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = __webpack_require__(0);\n\nvar _getPrefix = __webpack_require__(19);\n\nvar _getPrefix2 = _interopRequireDefault(_getPrefix);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*:: import type {ControlPosition, MouseTouchEvent} from './types';*/\n\n\nvar matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ {\n var node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n if (!el) {\n return;\n }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {\n if (!el) {\n return;\n }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/ {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/ {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/ {\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/ {\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: {clientX: number, clientY: number}*/, offsetParent /*: HTMLElement*/) /*: ControlPosition*/ {\n var isBody = offsetParent === offsetParent.ownerDocument.body;\n var offsetParentRect = isBody ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect();\n\n var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return { x: x, y: y };\n}\n\nfunction createCSSTransform(_ref) /*: Object*/ {\n var x = _ref.x,\n y = _ref.y;\n\n // Replace unitless items with px\n return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix2.default), 'translate(' + x + 'px,' + y + 'px)');\n}\n\nfunction createSVGTransform(_ref3) /*: string*/ {\n var x = _ref3.x,\n y = _ref3.y;\n\n return 'translate(' + x + ',' + y + ')';\n}\n\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ {\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n return identifier === t.identifier;\n }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n return identifier === t.identifier;\n });\n}\n\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/ {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n var styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nfunction styleHacks() /*: Object*/ {\n var childStyle /*: Object*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return _extends({\n touchAction: 'none'\n }, childStyle);\n}\n\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp('(?:^|\\\\s)' + className + '(?!\\\\S)'))) {\n el.className += ' ' + className;\n }\n }\n}\n\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(?:^|\\\\s)' + className + '(?!\\\\S)', 'g'), '');\n }\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(14)(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(17)();\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\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 (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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 warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = __webpack_require__(0);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domFns = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n var bounds = draggable.props.bounds;\n\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n var node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n var ownerDocument = node.ownerDocument;\n\n var ownerWindow = ownerDocument.defaultView;\n var boundNode = void 0;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n var nodeStyle = ownerWindow.getComputedStyle(node);\n var boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ {\n var x = Math.round(pendingX / grid[0]) * grid[0];\n var y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/ {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/ {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ {\n var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n var node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ {\n var state = draggable.state;\n var isStart = !(0, _shims.isNum)(state.lastX);\n var node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node: node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x: x, y: y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node: node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x: x, y: y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/ {\n var node = _reactDom2.default.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(7);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domFns = __webpack_require__(5);\n\nvar _positionFns = __webpack_require__(9);\n\nvar _shims = __webpack_require__(0);\n\nvar _log = __webpack_require__(11);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n\n\n// Simple abstraction for dragging events names.\n/*:: import type {Element as ReactElement} from 'react';*/\nvar eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nvar dragEventFor = eventsFor.mouse;\n\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\nvar DraggableCore = function (_React$Component) {\n _inherits(DraggableCore, _React$Component);\n\n function DraggableCore() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DraggableCore);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DraggableCore.__proto__ || Object.getPrototypeOf(DraggableCore)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n }, _this.handleDragStart = function (e) {\n // Make it possible to attach event handlers on top of this one.\n _this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n var thisNode = _reactDom2.default.findDOMNode(_this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n var ownerDocument = thisNode.ownerDocument;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n _this.setState({ touchIdentifier: touchIdentifier });\n\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this);\n if (position == null) return; // not possible but satisfies flow\n var x = position.x,\n y = position.y;\n\n // Create an event object with all the data parents need to make a decision here.\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n (0, _log2.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log2.default)('calling', _this.props.onStart);\n var shouldUpdate = _this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n _this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }, _this.handleDrag = function (e) {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n if (position == null) return;\n var x = position.x,\n y = position.y;\n\n // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var _deltaX = x - _this.state.lastX,\n _deltaY = y - _this.state.lastY;\n\n var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, _deltaX, _deltaY);\n\n var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n _deltaX = _snapToGrid2[0];\n _deltaY = _snapToGrid2[1];\n\n if (!_deltaX && !_deltaY) return; // skip useless drag\n x = _this.state.lastX + _deltaX, y = _this.state.lastY + _deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n (0, _log2.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n var shouldUpdate = _this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n _this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n var event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n _this.handleDragStop(event);\n }\n return;\n }\n\n _this.setState({\n lastX: x,\n lastY: y\n });\n }, _this.handleDragStop = function (e) {\n if (!_this.state.dragging) return;\n\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);\n if (position == null) return;\n var x = position.x,\n y = position.y;\n\n var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);\n\n var thisNode = _reactDom2.default.findDOMNode(_this);\n if (thisNode) {\n // Remove user-select hack\n if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log2.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n _this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n _this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log2.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }\n }, _this.onMouseDown = function (e) {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return _this.handleDragStart(e);\n }, _this.onMouseUp = function (e) {\n dragEventFor = eventsFor.mouse;\n\n return _this.handleDragStop(e);\n }, _this.onTouchStart = function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return _this.handleDragStart(e);\n }, _this.onTouchEnd = function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return _this.handleDragStop(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DraggableCore, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n var thisNode = _reactDom2.default.findDOMNode(this);\n if (thisNode) {\n var ownerDocument = thisNode.ownerDocument;\n\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n\n }, {\n key: 'render',\n value: function render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n }]);\n\n return DraggableCore;\n}(_react2.default.Component);\n\nDraggableCore.displayName = 'DraggableCore';\nDraggableCore.propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes2.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes2.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes2.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function offsetParent(props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes2.default.arrayOf(_propTypes2.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    \n *
    Click me to drag
    \n *
    This is some other content
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n handle: _propTypes2.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
    \n *
    You can't drag from here
    \n *
    Dragging here works fine
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes2.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes2.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes2.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes2.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n};\nDraggableCore.defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function onStart() {},\n onDrag: function onDrag() {},\n onStop: function onStop() {},\n onMouseDown: function onMouseDown() {}\n};\nexports.default = DraggableCore;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n var _console;\n\n if (undefined) (_console = console).log.apply(_console, arguments);\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Draggable = __webpack_require__(13).default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = __webpack_require__(10).default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(7);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(4);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _classnames = __webpack_require__(18);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _domFns = __webpack_require__(5);\n\nvar _positionFns = __webpack_require__(9);\n\nvar _shims = __webpack_require__(0);\n\nvar _DraggableCore = __webpack_require__(10);\n\nvar _DraggableCore2 = _interopRequireDefault(_DraggableCore);\n\nvar _log = __webpack_require__(11);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*:: import type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';*/\n/*:: import type {DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};*/\n\n\n//\n// Define \n//\n\n/*:: export type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};*/\n\nvar Draggable = function (_React$Component) {\n _inherits(Draggable, _React$Component);\n\n function Draggable(props /*: DraggableProps*/) {\n _classCallCheck(this, Draggable);\n\n var _this = _possibleConstructorReturn(this, (Draggable.__proto__ || Object.getPrototypeOf(Draggable)).call(this, props));\n\n _this.onDragStart = function (e, coreData) {\n (0, _log2.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n _this.setState({ dragging: true, dragged: true });\n };\n\n _this.onDrag = function (e, coreData) {\n if (!_this.state.dragging) return false;\n (0, _log2.default)('Draggable: onDrag: %j', coreData);\n\n var uiData = (0, _positionFns.createDraggableData)(_this, coreData);\n\n var newState /*: $Shape*/ = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (_this.props.bounds) {\n // Save original x and y.\n var _x = newState.x,\n _y = newState.y;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += _this.state.slackX;\n newState.y += _this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y),\n _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n newStateX = _getBoundPosition2[0],\n newStateY = _getBoundPosition2[1];\n\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = _this.state.slackX + (_x - newState.x);\n newState.slackY = _this.state.slackY + (_y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - _this.state.x;\n uiData.deltaY = newState.y - _this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n var shouldUpdate = _this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n _this.setState(newState);\n };\n\n _this.onDragStop = function (e, coreData) {\n if (!_this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData));\n if (shouldStop === false) return false;\n\n (0, _log2.default)('Draggable: onDragStop: %j', coreData);\n\n var newState /*: $Shape*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n var controlled = Boolean(_this.props.position);\n if (controlled) {\n var _this$props$position = _this.props.position,\n _x2 = _this$props$position.x,\n _y2 = _this$props$position.y;\n\n newState.x = _x2;\n newState.y = _y2;\n }\n\n _this.setState(newState);\n };\n\n _this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n return _this;\n }\n\n _createClass(Draggable, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom2.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps /*: Object*/) {\n // Set x/y if position has changed\n if (nextProps.position && (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.setState({ dragging: false }); // prevents invariant if unmounted while dragging\n }\n }, {\n key: 'render',\n value: function render() /*: ReactElement*/ {\n var _classNames;\n\n var style = {},\n svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n var controlled = Boolean(this.props.position);\n var draggable = !controlled || this.state.dragging;\n\n var position = this.props.position || this.props.defaultPosition;\n var transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : position.x,\n\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts);\n }\n\n var _props = this.props,\n defaultClassName = _props.defaultClassName,\n defaultClassNameDragging = _props.defaultClassNameDragging,\n defaultClassNameDragged = _props.defaultClassNameDragged;\n\n\n var children = _react2.default.Children.only(this.props.children);\n\n // Mark with class while dragging\n var className = (0, _classnames2.default)(children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames));\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react2.default.createElement(\n _DraggableCore2.default,\n _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }),\n _react2.default.cloneElement(children, {\n className: className,\n style: _extends({}, children.props.style, style),\n transform: svgTransform\n })\n );\n }\n }]);\n\n return Draggable;\n}(_react2.default.Component);\n\nDraggable.displayName = 'Draggable';\nDraggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, {\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    Content
    \n *
    \n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes2.default.oneOfType([_propTypes2.default.shape({\n left: _propTypes2.default.number,\n right: _propTypes2.default.number,\n top: _propTypes2.default.number,\n bottom: _propTypes2.default.number\n }), _propTypes2.default.string, _propTypes2.default.oneOf([false])]),\n\n defaultClassName: _propTypes2.default.string,\n defaultClassNameDragging: _propTypes2.default.string,\n defaultClassNameDragged: _propTypes2.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes2.default.shape({\n x: _propTypes2.default.number,\n y: _propTypes2.default.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n position: _propTypes2.default.shape({\n x: _propTypes2.default.number,\n y: _propTypes2.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\nDraggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, {\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: { x: 0, y: 0 },\n position: null\n});\nexports.default = Draggable;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\nvar invariant = __webpack_require__(2);\nvar warning = __webpack_require__(8);\nvar assign = __webpack_require__(15);\n\nvar ReactPropTypesSecret = __webpack_require__(3);\nvar checkPropTypes = __webpack_require__(16);\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n var invariant = __webpack_require__(2);\n var warning = __webpack_require__(8);\n var ReactPropTypesSecret = __webpack_require__(3);\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (Object({\"DRAGGABLE_DEBUG\":undefined}).NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(1);\nvar invariant = __webpack_require__(2);\nvar ReactPropTypesSecret = __webpack_require__(3);\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\treturn classNames;\n\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/ {\n var prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n var style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (var i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n return prefix ? '' + prefix + kebabToTitleCase(prop) : prop;\n}\n\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ {\n return prefix ? '-' + prefix.toLowerCase() + '-' + prop : prop;\n}\n\nfunction kebabToTitleCase(str /*: string*/) /*: string*/ {\n var out = '';\n var shouldCapitalize = true;\n for (var i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexports.default = getPrefix();\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=react-draggable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-draggable/dist/react-draggable.js\n// module id = 6\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_7__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 7\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDraggable = require('react-draggable');\n\nvar _cloneElement = require('./cloneElement');\n\nvar _cloneElement2 = _interopRequireDefault(_cloneElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Resizable = function (_React$Component) {\n _inherits(Resizable, _React$Component);\n\n function Resizable() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Resizable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n resizing: false,\n width: _this.props.width, height: _this.props.height,\n slackW: 0, slackH: 0\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // If parent changes height/width, set that in our state.\n if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) {\n this.setState({\n width: nextProps.width,\n height: nextProps.height\n });\n }\n };\n\n Resizable.prototype.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n };\n\n // If you do this, be careful of constraints\n\n\n Resizable.prototype.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n\n\n if (this.props.lockAspectRatio) {\n var ratio = this.state.width / this.state.height;\n height = width / ratio;\n width = height * ratio;\n }\n\n if (!min && !max) return [width, height];\n\n var oldW = width,\n oldH = height;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _state = this.state,\n slackW = _state.slackW,\n slackH = _state.slackH;\n\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n }\n\n // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n slackW += oldW - width;\n slackH += oldH - height;\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({ slackW: slackW, slackH: slackH });\n }\n\n return [width, height];\n };\n\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n\n\n Resizable.prototype.resizeHandler = function resizeHandler(handlerName) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n\n\n // Axis restrictions\n var canDragX = _this2.props.axis === 'both' || _this2.props.axis === 'x';\n var canDragY = _this2.props.axis === 'both' || _this2.props.axis === 'y';\n\n // Update w/h\n var width = _this2.state.width + (canDragX ? deltaX : 0);\n var height = _this2.state.height + (canDragY ? deltaY : 0);\n\n // Early return if no change\n var widthChanged = width !== _this2.state.width,\n heightChanged = height !== _this2.state.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n // Set the appropriate state for this handler.\n var _runConstraints = _this2.runConstraints(width, height);\n\n width = _runConstraints[0];\n height = _runConstraints[1];\n var newState = {};\n if (handlerName === 'onResizeStart') {\n newState.resizing = true;\n } else if (handlerName === 'onResizeStop') {\n newState.resizing = false;\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.state.width && height === _this2.state.height) return;\n newState.width = width;\n newState.height = height;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n if (hasCb) {\n if (typeof e.persist === 'function') e.persist();\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, { node: node, size: { width: width, height: height } });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n Resizable.prototype.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n children = _props.children,\n draggableOpts = _props.draggableOpts,\n width = _props.width,\n height = _props.height,\n handleSize = _props.handleSize,\n lockAspectRatio = _props.lockAspectRatio,\n axis = _props.axis,\n minConstraints = _props.minConstraints,\n maxConstraints = _props.maxConstraints,\n onResize = _props.onResize,\n onResizeStop = _props.onResizeStop,\n onResizeStart = _props.onResizeStart,\n p = _objectWithoutProperties(_props, ['children', 'draggableOpts', 'width', 'height', 'handleSize', 'lockAspectRatio', 'axis', 'minConstraints', 'maxConstraints', 'onResize', 'onResizeStop', 'onResizeStart']);\n\n var className = p.className ? p.className + ' react-resizable' : 'react-resizable';\n\n // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // Its original children (resizable's child's children), and\n // A draggable handle.\n return (0, _cloneElement2.default)(children, _extends({}, p, {\n className: className,\n children: [children.props.children, _react2.default.createElement(\n _reactDraggable.DraggableCore,\n _extends({}, draggableOpts, {\n key: 'resizableHandle',\n onStop: this.resizeHandler('onResizeStop'),\n onStart: this.resizeHandler('onResizeStart'),\n onDrag: this.resizeHandler('onResize')\n }),\n _react2.default.createElement('span', { className: 'react-resizable-handle' })\n )]\n }));\n };\n\n return Resizable;\n}(_react2.default.Component);\n\nResizable.propTypes = {\n //\n // Required Props\n //\n\n // Require that one and only one child be present.\n children: _propTypes2.default.element.isRequired,\n\n // Initial w/h\n width: _propTypes2.default.number.isRequired,\n height: _propTypes2.default.number.isRequired,\n\n //\n // Optional props\n //\n\n // If you change this, be sure to update your css\n handleSize: _propTypes2.default.array,\n\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes2.default.bool,\n\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']),\n\n // Min/max size\n minConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number),\n maxConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number),\n\n // Callbacks\n onResizeStop: _propTypes2.default.func,\n onResizeStart: _propTypes2.default.func,\n onResize: _propTypes2.default.func,\n\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes2.default.object\n};\nResizable.defaultProps = {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity]\n};\nexports.default = Resizable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-resizable/build/Resizable.js\n// module id = 8\n// module chunks = 0","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/responsiveUtils.js","module.exports = require('./lib/ReactGridLayout').default;\nmodule.exports.utils = require('./lib/utils');\nmodule.exports.Responsive = require('./lib/ResponsiveReactGridLayout').default;\nmodule.exports.Responsive.utils = require('./lib/responsiveUtils');\nmodule.exports.WidthProvider = require('./lib/components/WidthProvider').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index-dev.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 11\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 12\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 13\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 14\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 15\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 16\n// module chunks = 0","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { perc, setTopLeft, setTransform } from \"./utils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n Position\n} from \"./utils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n // Helper for generating column width\n calcColWidth(): number {\n const { margin, containerPadding, containerWidth, cols } = this.props;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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(\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n ): Position {\n const { margin, containerPadding, rowHeight } = this.props;\n const colWidth = this.calcColWidth();\n\n const out = {\n left: Math.round((colWidth + margin[0]) * x + containerPadding[0]),\n top: Math.round((rowHeight + margin[1]) * y + containerPadding[1]),\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n width:\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]),\n height:\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1])\n };\n\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): { x: number, y: number } {\n const { margin, cols, rowHeight, w, h, maxRows } = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({\n height,\n width\n }: {\n height: number,\n width: number\n }): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight, x, y } = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: ReactElement): ReactElement {\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(\n child: ReactElement,\n position: Position\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH } = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n onDragHandler(handlerName: string) {\n return (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const handler = this.props[handlerName];\n if (!handler) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // Get new XY\n switch (handlerName) {\n case \"onDragStart\": {\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n newPosition.left =\n clientRect.left - parentRect.left + offsetParent.scrollLeft;\n newPosition.top =\n clientRect.top - parentRect.top + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n break;\n }\n case \"onDrag\":\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n break;\n case \"onDragStop\":\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n break;\n default:\n throw new Error(\n \"onDragHandler called with unrecognized handlerName: \" + handlerName\n );\n }\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return handler.call(this, this.props.i, x, y, { e, node, newPosition });\n };\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n onResizeHandler(handlerName: string) {\n return (\n e: Event,\n { node, size }: { node: HTMLElement, size: Position }\n ) => {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n };\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n useCSSTransforms\n } = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/GridItem.jsx","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-resizable/index.js\n// module id = 18\n// module chunks = 0","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nmodule.exports = function cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _extends({}, element.props.style, props.style);\n }\n if (props.className && element.props.className) {\n props.className = element.props.className + ' ' + props.className;\n }\n return _react2.default.cloneElement(element, props);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-resizable/build/cloneElement.js\n// module id = 19\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Resizable = require('./Resizable');\n\nvar _Resizable2 = _interopRequireDefault(_Resizable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// An example use of Resizable.\nvar ResizableBox = function (_React$Component) {\n _inherits(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResizableBox);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n width: _this.props.width,\n height: _this.props.height\n }, _this.onResize = function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n ResizableBox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) {\n this.setState({\n width: nextProps.width,\n height: nextProps.height\n });\n }\n };\n\n ResizableBox.prototype.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _props = this.props,\n handleSize = _props.handleSize,\n onResize = _props.onResize,\n onResizeStart = _props.onResizeStart,\n onResizeStop = _props.onResizeStop,\n draggableOpts = _props.draggableOpts,\n minConstraints = _props.minConstraints,\n maxConstraints = _props.maxConstraints,\n lockAspectRatio = _props.lockAspectRatio,\n axis = _props.axis,\n width = _props.width,\n height = _props.height,\n props = _objectWithoutProperties(_props, ['handleSize', 'onResize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'axis', 'width', 'height']);\n\n return _react2.default.createElement(\n _Resizable2.default,\n {\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis\n },\n _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props))\n );\n };\n\n return ResizableBox;\n}(_react2.default.Component);\n\nResizableBox.propTypes = {\n height: _propTypes2.default.number,\n width: _propTypes2.default.number\n};\nResizableBox.defaultProps = {\n handleSize: [20, 20]\n};\nexports.default = ResizableBox;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-resizable/build/ResizableBox.js\n// module id = 20\n// module chunks = 0","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n componentWillReceiveProps(nextProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n nextProps.width != this.props.width ||\n nextProps.breakpoint !== this.props.breakpoint ||\n !isEqual(nextProps.breakpoints, this.props.breakpoints) ||\n !isEqual(nextProps.cols, this.props.cols)\n ) {\n this.onWidthChange(nextProps);\n } else if (!isEqual(nextProps.layouts, this.props.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = this.state;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n this.setState({ layout: newLayout });\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(nextProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = nextProps;\n const newBreakpoint =\n nextProps.breakpoint ||\n getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n this.props.breakpoints !== breakpoints ||\n this.props.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts))\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n let layout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n nextProps.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n this.props.onWidthChange(\n nextProps.width,\n nextProps.margin,\n newCols,\n nextProps.containerPadding\n );\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ResponsiveReactGridLayout.jsx","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/components/WidthProvider.jsx"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ReactGridLayout/webpack/universalModuleDefinition","webpack://ReactGridLayout/webpack/bootstrap","webpack://ReactGridLayout/./node_modules/prop-types/index.js","webpack://ReactGridLayout/./lib/utils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://ReactGridLayout/./node_modules/lodash.isequal/index.js","webpack://ReactGridLayout/./lib/responsiveUtils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack://ReactGridLayout/./node_modules/classnames/index.js","webpack://ReactGridLayout/./node_modules/react-draggable/web/react-draggable.min.js","webpack://ReactGridLayout/./lib/GridItem.jsx","webpack://ReactGridLayout/./lib/ReactGridLayout.jsx","webpack://ReactGridLayout/./node_modules/react-resizable/build/Resizable.js","webpack://ReactGridLayout/./node_modules/react-resizable/index.js","webpack://ReactGridLayout/./index-dev.js","webpack://ReactGridLayout/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactGridLayout/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactGridLayout/(webpack)/buildin/global.js","webpack://ReactGridLayout/(webpack)/buildin/module.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/utils.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/ResizableBox.js","webpack://ReactGridLayout/./lib/ResponsiveReactGridLayout.jsx","webpack://ReactGridLayout/./lib/components/WidthProvider.jsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isProduction","process","DEBUG","bottom","layout","bottomY","max","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","w","x","minW","maxW","minH","maxH","moved","Boolean","static","isDraggable","isResizable","childrenEqual","a","b","isEqual","React","Children","map","collides","l1","l2","compact","compactType","cols","compareWith","getStatics","sorted","sortLayoutItems","out","compactItem","push","indexOf","heightWidth","resolveCompactionCollision","item","moveToCoord","axis","sizeProp","otherItem","fullLayout","compactH","Math","min","getFirstCollision","correctBounds","bounds","collidesWith","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","log","String","oldX","oldY","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","compactV","fakeItem","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTopLeft","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","concat","sort","synchronizeLayoutWithChildren","initialLayout","children","forEach","child","exists","props","_grid","console","warn","g","validateLayout","contextName","subProps","isArray","Error","j","autoBindHandlers","el","fns","noop","LARGE_ARRAY_SIZE","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","mapToArray","result","size","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pop","pairs","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","hasOwn","classNames","classes","argType","inner","apply","join","default","isNaN","parseInt","toUpperCase","document","documentElement","style","getOwnPropertyDescriptor","u","configurable","writable","f","O","v","D","S","P","parentNode","attachEvent","addEventListener","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","body","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","targetTouches","identifier","changedTouches","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","classList","className","match","remove","selection","empty","getSelection","removeAllRanges","getOwnPropertyDescriptors","defineProperties","touchAction","right","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","k","marginBottom","round","offsetParent","state","lastX","node","deltaX","deltaY","lastY","scale","findDOMNode","iterator","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","touch","start","move","stop","mouse","TypeError","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","target","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","next","done","return","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","only","onTouchStart","onMouseUp","onTouchEnd","bool","arrayOf","number","string","DraggableCore","T","assign","E","dragged","slackX","slackY","defaultPosition","prevPropsPosition","isElementSVG","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","onDragStart","onDragStop","propTypes","oneOf","oneOfType","shape","defaultProps","resetWarningCache","isRequired","any","element","elementType","instanceOf","objectOf","exact","checkPropTypes","PropTypes","GridItem","resizing","newPosition","parentRect","clientRect","cLeft","transformScale","pLeft","cTop","pTop","calcXY","callbackData","onResizeHandler","prevProps","droppingPosition","moveDroppingItem","currentNode","ReactDOM","shouldDrag","margin","containerPadding","containerWidth","rowHeight","colWidth","calcColWidth","Infinity","maxRows","pos","usePercentages","useCSSTransforms","maxWidth","calcPosition","mins","maxes","minConstraints","maxConstraints","onResizeStop","onResizeStart","onResize","handlerName","handler","calcWH","newChild","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","propName","verticalCompact","layoutClassName","isFirefox","navigator","userAgent","toLowerCase","includes","ReactGridLayout","context","activeDrag","mounted","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","droppingItem","layerX","layerY","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","find","onDrop","nextProps","prevState","newLayoutBase","propsLayout","onLayoutMaybeChanged","autoSize","nbRow","containerPaddingY","placeholder","onLayoutChange","hasCollisions","leastX","leastY","Number","isFinite","isDroppingItem","draggableCancel","draggableHandle","draggable","resizable","isDroppable","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","_react","_interopRequireDefault","_propTypes","_reactDraggable","_utils","obj","_extends","source","ownKeys","enumerableOnly","symbols","sym","_defineProperty","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","_assertThisInitialized","slackW","slackH","_proto","lockAspectRatio","aspectRatio","runConstraints","_ref","ratio","_ratio","oldW","oldH","_this$state","resizeHandler","_this2","_ref2","canDragX","canDragY","widthChanged","heightChanged","_this2$runConstraints","newState","persist","renderResizeHandle","resizeHandle","render","_this3","_this$props","draggableOpts","resizeHandles","handleSize","excluded","sourceKeys","_objectWithoutPropertiesLoose","_objectSpread","ResizableBox","utils","Responsive","WidthProvider","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","webpackPolyfill","deprecate","paths","_Resizable","propsWidth","propsHeight","getDerivedStateFromProps","getIndentationValue","param","ResponsiveReactGridLayout","generateInitialState","colNo","onWidthChange","newBreakpoint","newCols","onBreakpointChange","lg","md","sm","xs","xxs","ComposedComponent","offsetWidth","onWindowResize","measureBeforeMount","rest"],"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\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { x: number, y: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { perc, setTopLeft, setTransform } from \"./utils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.droppingPosition && prevProps.droppingPosition) {\n this.moveDroppingItem(prevProps);\n }\n }\n\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevProps.droppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.x !== prevProps.droppingPosition.x) ||\n droppingPosition.y !== prevProps.droppingPosition.y;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.x,\n deltaY: droppingPosition.y\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.x - dragging.left;\n const deltaY = droppingPosition.y - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n // Helper for generating column width\n calcColWidth(): number {\n const { margin, containerPadding, containerWidth, cols } = this.props;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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(\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n ): Position {\n const { margin, containerPadding, rowHeight } = this.props;\n const colWidth = this.calcColWidth();\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n } \n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width = w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height = h === Infinity\n ? h \n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n } \n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): { x: number, y: number } {\n const { margin, cols, rowHeight, w, h, maxRows } = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({\n height,\n width\n }: {\n height: number,\n width: number\n }): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight, x, y } = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: ReactElement): ReactElement {\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(\n child: ReactElement,\n position: Position\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH } = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n if (!this.props.onDrag) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDrag &&\n this.props.onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n validateLayout,\n getAllCollisions,\n noop\n} from \"./utils\";\nimport GridItem from \"./GridItem\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n EventCallback,\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number\n }) => void,\n children: ReactChildrenArray>\n};\n// End Types\n\nconst compactType = (props: Props): CompactType => {\n const { verticalCompact, compactType } = props || {};\n\n return verticalCompact === false ? null : compactType;\n};\n\nconst layoutClassName = \"react-grid-layout\";\nconst isFirefox = navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n if (this.state.activeDrag) {\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n }\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(\n !l.static && isDraggable && (l.isDraggable || l.isDraggable == null)\n );\n const resizable = Boolean(\n !l.static && isResizable && (l.isResizable || l.isResizable == null)\n );\n\n return (\n \n {child}\n \n );\n }\n\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n if (\n isFirefox &&\n !e.nativeEvent.target.className.includes(layoutClassName)\n ) {\n return false;\n }\n\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { x: layerX, y: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: 0,\n y: 0,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const shouldUpdatePosition =\n this.state.droppingPosition.x != layerX ||\n this.state.droppingPosition.y != layerY;\n shouldUpdatePosition && this.setState({ droppingPosition });\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = () => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se']\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(this.props);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(nextProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = nextProps;\n const newBreakpoint =\n nextProps.breakpoint ||\n getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n this.props.breakpoints !== breakpoints ||\n this.props.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts))\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n nextProps.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(nextProps.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n nextProps.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n nextProps.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index da0999835..9bd626928 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-grid-layout", - "version": "0.16.6", + "version": "0.17.0", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { @@ -93,4 +93,4 @@ "git add" ] } -} +} \ No newline at end of file From 82863b59ff1b268148edfbaa5a7fc39a9f0ce05f Mon Sep 17 00:00:00 2001 From: Alex Manusu Date: Tue, 29 Oct 2019 16:11:58 -0700 Subject: [PATCH 047/101] fix(ReactGridLayout): ensure window exists before checking navigator (#1057) This was an issue for my usage as the package is imported in a node context, and this navigator check is done at the top level of this package rather than after render the grid. So `window` is undefined at the point it is initially included. So we didn't even need to render the grid layout to have this issue. --- lib/ReactGridLayout.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index a97f5e4f1..20975776c 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -97,7 +97,13 @@ const compactType = (props: Props): CompactType => { }; const layoutClassName = "react-grid-layout"; -const isFirefox = navigator.userAgent.toLowerCase().includes("firefox"); +let isFirefox = false; +// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator +try { + isFirefox = navigator.userAgent.toLowerCase().includes("firefox"); +} catch (e) { + /* Ignore */ +} /** * A reactive, fluid grid layout with draggable, resizable components. From 602281313fc45329fc8ccde0f99aa95fbc62dd4e Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 29 Oct 2019 16:14:24 -0700 Subject: [PATCH 048/101] chore(github): disable labeler Disabled until fix for https://github.com/actions/labeler/issues/12 is present --- .github/workflows/label.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index c01c35695..b1797dc4a 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -5,8 +5,9 @@ jobs: label: runs-on: ubuntu-latest - + # 'if' added due to https://github.com/actions/labeler/issues/12 steps: - uses: actions/labeler@v2 + if: github.repository == 'STRML/react-grid-layout' with: repo-token: "${{ secrets.GITHUB_TOKEN }}" From caa921bf908679dd9f615cb29b97c6045a026c06 Mon Sep 17 00:00:00 2001 From: Serebrennikov Alex Date: Wed, 30 Oct 2019 05:16:58 +0600 Subject: [PATCH 049/101] issue-1046: added scale for DraggableCore (#1054) --- lib/GridItem.jsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 334485e91..b94424b0c 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -248,17 +248,19 @@ export default class GridItem extends React.Component { if (state && state.resizing) { out.width = Math.round(state.resizing.width); out.height = Math.round(state.resizing.height); - } + } // Otherwise, calculate from grid units. else { // 0 * Infinity === NaN, which causes problems with resize constraints; // Fix this if it occurs. // Note we do it here rather than later because Math.round(Infinity) causes deopt - out.width = w === Infinity + out.width = + w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]); - out.height = h === Infinity - ? h + out.height = + h === Infinity + ? h : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]); } @@ -266,7 +268,7 @@ export default class GridItem extends React.Component { if (state && state.dragging) { out.top = Math.round(state.dragging.top); out.left = Math.round(state.dragging.left); - } + } // Otherwise, calculate from grid units. else { out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]); @@ -378,6 +380,7 @@ export default class GridItem extends React.Component { ".react-resizable-handle" + (this.props.cancel ? "," + this.props.cancel : "") } + scale={this.props.transformScale} > {child} From 1fe93e2cdb39b653da13f093f54180d679f9e5cc Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 29 Oct 2019 16:33:57 -0700 Subject: [PATCH 050/101] release 0.17.1 --- CHANGELOG.md | 10 +++++++++- dist/react-grid-layout.min.js | 2 +- dist/react-grid-layout.min.js.map | 2 +- package.json | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f92987e2c..ed4edbe9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +0.17.1 (Oct 29, 2019) +---- + +### Bugfixes + +- Surround `navigator` check in `try/catch` to avoid problems with mocked navigators [#1057](https://github.com/STRML/react-grid-layout/pull/1054) +- TransformScale is not applied properly while dragging an element [#1046](https://github.com/STRML/react-grid-layout/pull/1054) + 0.17.0 (Oct 24, 2019) ---- @@ -9,7 +17,7 @@ Thanks to @daynin and @n1ghtmare for taking an active role in maintaining RGL, a ### New Features -- Added ability to drag items into the grid from outside. [#980](https://github.com/STRML/react-grid-layout/pull/980). See [the example](https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html). +- Added ability to drag items into the grid from outside. [#980](https://github.com/STRML/react-grid-layout/pull/980). See [the example](https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html). - This is especially exciting as it opens up new "widget toolbox" use cases such as [Example 14](https://strml.github.io/react-grid-layout/examples/14-toolbox.html) with more intuitive interaction. Thanks @daynin. - `transformScale` prop [#987](https://github.com/STRML/react-grid-layout/pull/987) - `` now supports margin-per-breakpoint [#1016](https://github.com/STRML/react-grid-layout/pull/1016) diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index 9bd53240f..05838fff5 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -8,5 +8,5 @@ Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&x(t,e)}(e,o.a.Component),S(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(y.a)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:v({},n)})}}]),S(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,c=e.position,u=e.positionOffset,d=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),y={},g=null,m=!Boolean(c)||this.state.dragging,O=c||r,w={x:Object(f.a)(this)&&m?this.state.x:O.x,y:Object(f.b)(this)&&m?this.state.y:O.y};this.state.isElementSVG?g=Object(p.d)(w,u):y=Object(p.c)(w,u);var j=l()(n.props.className||"",a,(D(t={},i,this.state.dragging),D(t,s,this.state.dragged),t));return o.a.createElement(h.default,b({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:j,style:v({},n.props.style,{},y),transform:g}))}}]),e}();D(P,"displayName","Draggable"),D(P,"propTypes",v({},h.default.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),D(P,"defaultProps",v({},h.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){"use strict";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(6),l=n.n(u),p=n(1),f=n(5),d=n.n(f),h=n(7),y=n(10);function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;et.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>d.x&&(g=Math.min(g,t.x)),t.y>d.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(d.w=g-d.x),Number.isFinite(b)&&(d.h=b-d.y)}}h||(d.w=e,d.h=n);var m={w:d.w,h:d.h,x:d.x,y:d.y,static:!0,i:t};this.props.onResize(s,c,d,m,o,a),this.setState({layout:Object(p.compact)(s,M(this.props),l),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,c=i.oldResizeItem,u=this.props.cols,l=Object(p.getLayoutItem)(s,t);this.props.onResizeStop(s,c,l,null,o,a);var f=Object(p.compact)(s,M(this.props),u),d=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,d)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,c=e.maxRows,u=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(x,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:c,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:u,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(p.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,c=r.containerPadding,u=r.rowHeight,l=r.maxRows,f=r.isDraggable,d=r.isResizable,h=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,O=m.droppingPosition,w=Boolean(!n.static&&f&&(n.isDraggable||null==n.isDraggable)),j=Boolean(!n.static&&d&&(n.isResizable||null==n.isResizable));return o.a.createElement(x,{containerWidth:a,cols:i,margin:s,containerPadding:c||s,maxRows:l,rowHeight:u,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:w,isResizable:j,useCSSTransforms:h&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?O:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=l()(L,n),s=_({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:p.noop,onDragLeave:a?this.onDragLeave:p.noop,onDragEnter:a?this.onDragEnter:p.noop,onDragOver:a?this.onDragOver:p.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&k(n.prototype,r),a&&k(n,a),e}(o.a.Component);T(W,"displayName","ReactGridLayout"),T(W,"propTypes",{className:i.a.string,style:i.a.object,width:i.a.number,autoSize:i.a.bool,cols:i.a.number,draggableCancel:i.a.string,draggableHandle:i.a.string,verticalCompact:function(t){t.verticalCompact,0},compactType:i.a.oneOf(["vertical","horizontal"]),layout:function(t){var e=t.layout;void 0!==e&&Object(p.validateLayout)(e,"layout")},margin:i.a.arrayOf(i.a.number),containerPadding:i.a.arrayOf(i.a.number),rowHeight:i.a.number,maxRows:i.a.number,isDraggable:i.a.bool,isResizable:i.a.bool,preventCollision:i.a.bool,useCSSTransforms:i.a.bool,transformScale:i.a.number,isDroppable:i.a.bool,onLayoutChange:i.a.func,onDragStart:i.a.func,onDrag:i.a.func,onDragStop:i.a.func,onResizeStart:i.a.func,onResize:i.a.func,onResizeStop:i.a.func,onDrop:i.a.func,droppingItem:i.a.shape({i:i.a.string.isRequired,w:i.a.number.isRequired,h:i.a.number.isRequired}),children:function(t,e){var n=t[e],r={};o.a.Children.forEach(n,(function(t){if(r[t.key])throw new Error('Duplicate child key "'+t.key+'" found! This will cause problems in ReactGridLayout.');r[t.key]=!0}))}}),T(W,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:p.noop,onDragStart:p.noop,onDrag:p.noop,onDragStop:p.noop,onResizeStart:p.noop,onResize:p.noop,onResizeStop:p.noop,onDrop:p.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(16);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles"]),f=p.className?p.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:c,minConstraints:u,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:d},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},h)))},o}(r.default.Component);e.default=l,u(l,"propTypes",{height:o.default.number,width:o.default.number}),u(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return S}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(){return(d=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){for(var n=0;n, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&x(t,e)}(e,o.a.Component),S(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(y.a)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:v({},n)})}}]),S(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,c=e.position,u=e.positionOffset,d=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),y={},g=null,m=!Boolean(c)||this.state.dragging,O=c||r,w={x:Object(f.a)(this)&&m?this.state.x:O.x,y:Object(f.b)(this)&&m?this.state.y:O.y};this.state.isElementSVG?g=Object(p.d)(w,u):y=Object(p.c)(w,u);var j=l()(n.props.className||"",a,(D(t={},i,this.state.dragging),D(t,s,this.state.dragged),t));return o.a.createElement(h.default,b({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:j,style:v({},n.props.style,{},y),transform:g}))}}]),e}();D(P,"displayName","Draggable"),D(P,"propTypes",v({},h.default.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),D(P,"defaultProps",v({},h.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){"use strict";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(6),l=n.n(u),p=n(1),f=n(5),d=n.n(f),h=n(7),y=n(10);function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;et.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>d.x&&(g=Math.min(g,t.x)),t.y>d.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(d.w=g-d.x),Number.isFinite(b)&&(d.h=b-d.y)}}h||(d.w=e,d.h=n);var m={w:d.w,h:d.h,x:d.x,y:d.y,static:!0,i:t};this.props.onResize(s,c,d,m,o,a),this.setState({layout:Object(p.compact)(s,M(this.props),l),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,c=i.oldResizeItem,u=this.props.cols,l=Object(p.getLayoutItem)(s,t);this.props.onResizeStop(s,c,l,null,o,a);var f=Object(p.compact)(s,M(this.props),u),d=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,d)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,c=e.maxRows,u=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(x,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:c,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:u,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(p.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,c=r.containerPadding,u=r.rowHeight,l=r.maxRows,f=r.isDraggable,d=r.isResizable,h=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,O=m.droppingPosition,w=Boolean(!n.static&&f&&(n.isDraggable||null==n.isDraggable)),j=Boolean(!n.static&&d&&(n.isResizable||null==n.isResizable));return o.a.createElement(x,{containerWidth:a,cols:i,margin:s,containerPadding:c||s,maxRows:l,rowHeight:u,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:w,isResizable:j,useCSSTransforms:h&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?O:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=l()(L,n),s=_({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:p.noop,onDragLeave:a?this.onDragLeave:p.noop,onDragEnter:a?this.onDragEnter:p.noop,onDragOver:a?this.onDragOver:p.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&k(n.prototype,r),a&&k(n,a),e}(o.a.Component);T(W,"displayName","ReactGridLayout"),T(W,"propTypes",{className:i.a.string,style:i.a.object,width:i.a.number,autoSize:i.a.bool,cols:i.a.number,draggableCancel:i.a.string,draggableHandle:i.a.string,verticalCompact:function(t){t.verticalCompact,0},compactType:i.a.oneOf(["vertical","horizontal"]),layout:function(t){var e=t.layout;void 0!==e&&Object(p.validateLayout)(e,"layout")},margin:i.a.arrayOf(i.a.number),containerPadding:i.a.arrayOf(i.a.number),rowHeight:i.a.number,maxRows:i.a.number,isDraggable:i.a.bool,isResizable:i.a.bool,preventCollision:i.a.bool,useCSSTransforms:i.a.bool,transformScale:i.a.number,isDroppable:i.a.bool,onLayoutChange:i.a.func,onDragStart:i.a.func,onDrag:i.a.func,onDragStop:i.a.func,onResizeStart:i.a.func,onResize:i.a.func,onResizeStop:i.a.func,onDrop:i.a.func,droppingItem:i.a.shape({i:i.a.string.isRequired,w:i.a.number.isRequired,h:i.a.number.isRequired}),children:function(t,e){var n=t[e],r={};o.a.Children.forEach(n,(function(t){if(r[t.key])throw new Error('Duplicate child key "'+t.key+'" found! This will cause problems in ReactGridLayout.');r[t.key]=!0}))}}),T(W,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:p.noop,onDragStart:p.noop,onDrag:p.noop,onDragStop:p.noop,onResizeStart:p.noop,onResize:p.noop,onResizeStop:p.noop,onDrop:p.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(16);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles"]),f=p.className?p.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:c,minConstraints:u,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:d},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},h)))},o}(r.default.Component);e.default=l,u(l,"propTypes",{height:o.default.number,width:o.default.number}),u(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return S}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(){return(d=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){for(var n=0;n;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { x: number, y: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { perc, setTopLeft, setTransform } from \"./utils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.droppingPosition && prevProps.droppingPosition) {\n this.moveDroppingItem(prevProps);\n }\n }\n\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevProps.droppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.x !== prevProps.droppingPosition.x) ||\n droppingPosition.y !== prevProps.droppingPosition.y;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.x,\n deltaY: droppingPosition.y\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.x - dragging.left;\n const deltaY = droppingPosition.y - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n // Helper for generating column width\n calcColWidth(): number {\n const { margin, containerPadding, containerWidth, cols } = this.props;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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(\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n ): Position {\n const { margin, containerPadding, rowHeight } = this.props;\n const colWidth = this.calcColWidth();\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n } \n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width = w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height = h === Infinity\n ? h \n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n } \n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): { x: number, y: number } {\n const { margin, cols, rowHeight, w, h, maxRows } = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({\n height,\n width\n }: {\n height: number,\n width: number\n }): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight, x, y } = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: ReactElement): ReactElement {\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(\n child: ReactElement,\n position: Position\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH } = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n if (!this.props.onDrag) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDrag &&\n this.props.onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n validateLayout,\n getAllCollisions,\n noop\n} from \"./utils\";\nimport GridItem from \"./GridItem\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n EventCallback,\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number\n }) => void,\n children: ReactChildrenArray>\n};\n// End Types\n\nconst compactType = (props: Props): CompactType => {\n const { verticalCompact, compactType } = props || {};\n\n return verticalCompact === false ? null : compactType;\n};\n\nconst layoutClassName = \"react-grid-layout\";\nconst isFirefox = navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n if (this.state.activeDrag) {\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n }\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(\n !l.static && isDraggable && (l.isDraggable || l.isDraggable == null)\n );\n const resizable = Boolean(\n !l.static && isResizable && (l.isResizable || l.isResizable == null)\n );\n\n return (\n \n {child}\n \n );\n }\n\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n if (\n isFirefox &&\n !e.nativeEvent.target.className.includes(layoutClassName)\n ) {\n return false;\n }\n\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { x: layerX, y: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: 0,\n y: 0,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const shouldUpdatePosition =\n this.state.droppingPosition.x != layerX ||\n this.state.droppingPosition.y != layerY;\n shouldUpdatePosition && this.setState({ droppingPosition });\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = () => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se']\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(this.props);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(nextProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = nextProps;\n const newBreakpoint =\n nextProps.breakpoint ||\n getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n this.props.breakpoints !== breakpoints ||\n this.props.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts))\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n nextProps.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(nextProps.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n nextProps.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n nextProps.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ReactGridLayout/webpack/universalModuleDefinition","webpack://ReactGridLayout/webpack/bootstrap","webpack://ReactGridLayout/./node_modules/prop-types/index.js","webpack://ReactGridLayout/./lib/utils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://ReactGridLayout/./node_modules/lodash.isequal/index.js","webpack://ReactGridLayout/./lib/responsiveUtils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack://ReactGridLayout/./node_modules/classnames/index.js","webpack://ReactGridLayout/./node_modules/react-draggable/web/react-draggable.min.js","webpack://ReactGridLayout/./lib/GridItem.jsx","webpack://ReactGridLayout/./lib/ReactGridLayout.jsx","webpack://ReactGridLayout/./node_modules/react-resizable/build/Resizable.js","webpack://ReactGridLayout/./node_modules/react-resizable/index.js","webpack://ReactGridLayout/./index-dev.js","webpack://ReactGridLayout/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactGridLayout/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactGridLayout/(webpack)/buildin/global.js","webpack://ReactGridLayout/(webpack)/buildin/module.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/utils.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/ResizableBox.js","webpack://ReactGridLayout/./lib/ResponsiveReactGridLayout.jsx","webpack://ReactGridLayout/./lib/components/WidthProvider.jsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isProduction","process","DEBUG","bottom","layout","bottomY","max","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","w","x","minW","maxW","minH","maxH","moved","Boolean","static","isDraggable","isResizable","childrenEqual","a","b","isEqual","React","Children","map","collides","l1","l2","compact","compactType","cols","compareWith","getStatics","sorted","sortLayoutItems","out","compactItem","push","indexOf","heightWidth","resolveCompactionCollision","item","moveToCoord","axis","sizeProp","otherItem","fullLayout","compactH","Math","min","getFirstCollision","correctBounds","bounds","collidesWith","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","log","String","oldX","oldY","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","compactV","fakeItem","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTopLeft","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","concat","sort","synchronizeLayoutWithChildren","initialLayout","children","forEach","child","exists","props","_grid","console","warn","g","validateLayout","contextName","subProps","isArray","Error","j","autoBindHandlers","el","fns","noop","LARGE_ARRAY_SIZE","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","mapToArray","result","size","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pop","pairs","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","hasOwn","classNames","classes","argType","inner","apply","join","default","isNaN","parseInt","toUpperCase","document","documentElement","style","getOwnPropertyDescriptor","u","configurable","writable","f","O","v","D","S","P","parentNode","attachEvent","addEventListener","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","body","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","targetTouches","identifier","changedTouches","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","classList","className","match","remove","selection","empty","getSelection","removeAllRanges","getOwnPropertyDescriptors","defineProperties","touchAction","right","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","k","marginBottom","round","offsetParent","state","lastX","node","deltaX","deltaY","lastY","scale","findDOMNode","iterator","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","touch","start","move","stop","mouse","TypeError","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","target","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","next","done","return","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","only","onTouchStart","onMouseUp","onTouchEnd","bool","arrayOf","number","string","DraggableCore","T","assign","E","dragged","slackX","slackY","defaultPosition","prevPropsPosition","isElementSVG","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","onDragStart","onDragStop","propTypes","oneOf","oneOfType","shape","defaultProps","resetWarningCache","isRequired","any","element","elementType","instanceOf","objectOf","exact","checkPropTypes","PropTypes","GridItem","resizing","newPosition","parentRect","clientRect","cLeft","transformScale","pLeft","cTop","pTop","calcXY","callbackData","onResizeHandler","prevProps","droppingPosition","moveDroppingItem","currentNode","ReactDOM","shouldDrag","margin","containerPadding","containerWidth","rowHeight","colWidth","calcColWidth","Infinity","maxRows","pos","usePercentages","useCSSTransforms","maxWidth","calcPosition","mins","maxes","minConstraints","maxConstraints","onResizeStop","onResizeStart","onResize","handlerName","handler","calcWH","newChild","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","propName","verticalCompact","layoutClassName","isFirefox","navigator","userAgent","toLowerCase","includes","ReactGridLayout","context","activeDrag","mounted","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","droppingItem","layerX","layerY","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","find","onDrop","nextProps","prevState","newLayoutBase","propsLayout","onLayoutMaybeChanged","autoSize","nbRow","containerPaddingY","placeholder","onLayoutChange","hasCollisions","leastX","leastY","Number","isFinite","isDroppingItem","draggableCancel","draggableHandle","draggable","resizable","isDroppable","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","_react","_interopRequireDefault","_propTypes","_reactDraggable","_utils","obj","_extends","source","ownKeys","enumerableOnly","symbols","sym","_defineProperty","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","_assertThisInitialized","slackW","slackH","_proto","lockAspectRatio","aspectRatio","runConstraints","_ref","ratio","_ratio","oldW","oldH","_this$state","resizeHandler","_this2","_ref2","canDragX","canDragY","widthChanged","heightChanged","_this2$runConstraints","newState","persist","renderResizeHandle","resizeHandle","render","_this3","_this$props","draggableOpts","resizeHandles","handleSize","excluded","sourceKeys","_objectWithoutPropertiesLoose","_objectSpread","ResizableBox","utils","Responsive","WidthProvider","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","webpackPolyfill","deprecate","paths","_Resizable","propsWidth","propsHeight","getDerivedStateFromProps","getIndentationValue","param","ResponsiveReactGridLayout","generateInitialState","colNo","onWidthChange","newBreakpoint","newCols","onBreakpointChange","lg","md","sm","xs","xxs","ComposedComponent","offsetWidth","onWindowResize","measureBeforeMount","rest"],"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\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { x: number, y: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { perc, setTopLeft, setTransform } from \"./utils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.droppingPosition && prevProps.droppingPosition) {\n this.moveDroppingItem(prevProps);\n }\n }\n\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevProps.droppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.x !== prevProps.droppingPosition.x) ||\n droppingPosition.y !== prevProps.droppingPosition.y;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.x,\n deltaY: droppingPosition.y\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.x - dragging.left;\n const deltaY = droppingPosition.y - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n // Helper for generating column width\n calcColWidth(): number {\n const { margin, containerPadding, containerWidth, cols } = this.props;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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(\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n ): Position {\n const { margin, containerPadding, rowHeight } = this.props;\n const colWidth = this.calcColWidth();\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): { x: number, y: number } {\n const { margin, cols, rowHeight, w, h, maxRows } = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({\n height,\n width\n }: {\n height: number,\n width: number\n }): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight, x, y } = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: ReactElement): ReactElement {\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(\n child: ReactElement,\n position: Position\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH } = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n if (!this.props.onDrag) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDrag &&\n this.props.onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n validateLayout,\n getAllCollisions,\n noop\n} from \"./utils\";\nimport GridItem from \"./GridItem\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n EventCallback,\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number\n }) => void,\n children: ReactChildrenArray>\n};\n// End Types\n\nconst compactType = (props: Props): CompactType => {\n const { verticalCompact, compactType } = props || {};\n\n return verticalCompact === false ? null : compactType;\n};\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = navigator.userAgent.toLowerCase().includes(\"firefox\");\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n if (this.state.activeDrag) {\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n }\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(\n !l.static && isDraggable && (l.isDraggable || l.isDraggable == null)\n );\n const resizable = Boolean(\n !l.static && isResizable && (l.isResizable || l.isResizable == null)\n );\n\n return (\n \n {child}\n \n );\n }\n\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n if (\n isFirefox &&\n !e.nativeEvent.target.className.includes(layoutClassName)\n ) {\n return false;\n }\n\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { x: layerX, y: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: 0,\n y: 0,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const shouldUpdatePosition =\n this.state.droppingPosition.x != layerX ||\n this.state.droppingPosition.y != layerY;\n shouldUpdatePosition && this.setState({ droppingPosition });\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = () => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se']\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(this.props);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(nextProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = nextProps;\n const newBreakpoint =\n nextProps.breakpoint ||\n getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n this.props.breakpoints !== breakpoints ||\n this.props.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts))\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n nextProps.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(nextProps.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n nextProps.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n nextProps.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 9bd626928..bd3b152ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-grid-layout", - "version": "0.17.0", + "version": "0.17.1", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { From f1fdad5389f96c2641ae76f1a2c39d6b2c5d6d6d Mon Sep 17 00:00:00 2001 From: Olga Polikashina Date: Sat, 2 Nov 2019 15:54:33 +0300 Subject: [PATCH 051/101] Add example for resizable handles --- README.md | 3 +- css/styles.css | 5 +- examples/resizable-styles.css | 51 +++++++++++++++++++ examples/vars.js | 12 +++++ lib/ReactGridLayout.jsx | 2 +- test/examples/17-resizable-handles.jsx | 70 ++++++++++++++++++++++++++ 6 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 examples/resizable-styles.css create mode 100644 test/examples/17-resizable-handles.jsx diff --git a/README.md b/README.md index 7156192ba..53f2976c9 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ RGL is React-only and does not require jQuery. 1. [Error Case](https://strml.github.io/react-grid-layout/examples/13-error-case.html) 1. [Toolbox](https://strml.github.io/react-grid-layout/examples/14-toolbox.html) 1. [Drag From Outside](https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html) +1. [Resizable Handles](https://strml.github.io/react-grid-layout/examples/17-resizable-handles.html) #### Projects Using React-Grid-Layout @@ -331,7 +332,7 @@ isDroppable: ?boolean = false // 'sw' - Southwest handle (bottom-left) // 'nw' - Northwest handle (top-left) // 'se' - Southeast handle (bottom-right) -// 'ne' - Northeast handle (top-center) +// 'ne' - Northeast handle (top-right) resizeHandles: ?string[] = ['se'] // diff --git a/css/styles.css b/css/styles.css index ed79e95f9..a3ab10221 100644 --- a/css/styles.css +++ b/css/styles.css @@ -42,6 +42,7 @@ height: 20px; bottom: 0; right: 0; + cursor: se-resize; } .react-grid-item > .react-resizable-handle::after { @@ -54,7 +55,3 @@ border-right: 2px solid rgba(0, 0, 0, 0.4); border-bottom: 2px solid rgba(0, 0, 0, 0.4); } - -.react-resizable-handle { - cursor: se-resize; -} diff --git a/examples/resizable-styles.css b/examples/resizable-styles.css new file mode 100644 index 000000000..75fa76378 --- /dev/null +++ b/examples/resizable-styles.css @@ -0,0 +1,51 @@ +.react-grid-item > .react-resizable-handle.react-resizable-handle-sw { + bottom: 0; + left: 0; + cursor: sw-resize; + transform: rotate(90deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-se { + bottom: 0; + right: 0; + cursor: se-resize; +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-nw { + top: 0; + left: 0; + cursor: nw-resize; + transform: rotate(180deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-ne { + top: 0; + right: 0; + cursor: ne-resize; + transform: rotate(270deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-w, +.react-grid-item > .react-resizable-handle.react-resizable-handle-e { + top: 50%; + margin-top: -10px; + cursor: ew-resize; +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-w { + left: 0; + transform: rotate(135deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-e { + right: 0; + transform: rotate(315deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-n, +.react-grid-item > .react-resizable-handle.react-resizable-handle-s { + left: 50%; + margin-left: -10px; + cursor: ns-resize; +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-n { + top: 0; + transform: rotate(225deg); +} +.react-grid-item > .react-resizable-handle.react-resizable-handle-s { + bottom: 0; + transform: rotate(45deg); +} \ No newline at end of file diff --git a/examples/vars.js b/examples/vars.js index 0b5ef4285..a3ba7f16f 100644 --- a/examples/vars.js +++ b/examples/vars.js @@ -139,5 +139,17 @@ module.exports = [ "Once you drop the item within the grid you'll get its coordinates/properties and can perform actions with " + "it accordingly." ] + }, + { + title: "Responsive Bootstrap Style", + source: "responsive-bootstrap-style", + paragraphs: [] + }, + { + title: "Resizable Handles", + source: "resizable-handles", + paragraphs: [ + "This demonstrates how to implement resizable handles for any corner" + ] } ]; diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 83069dfdb..bdfd6001b 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -194,7 +194,7 @@ export default class ReactGridLayout extends React.Component { // 'sw' - Southwest handle (bottom-left) // 'nw' - Northwest handle (top-left) // 'se' - Southeast handle (bottom-right) - // 'ne' - Northeast handle (top-center) + // 'ne' - Northeast handle (top-right) resizeHandles: PropTypes.arrayOf( PropTypes.oneOf(["s", "w", "e", "n", "sw", "nw", "se", "ne"]) ), diff --git a/test/examples/17-resizable-handles.jsx b/test/examples/17-resizable-handles.jsx new file mode 100644 index 000000000..3daf52b44 --- /dev/null +++ b/test/examples/17-resizable-handles.jsx @@ -0,0 +1,70 @@ +import React from "react"; +import _ from "lodash"; +import RGL, { WidthProvider } from "react-grid-layout"; +import "style-loader!css-loader!../../examples/resizable-styles.css"; + +const ReactGridLayout = WidthProvider(RGL); + +export default class ResizableHandles extends React.PureComponent { + static defaultProps = { + className: "layout", + items: 20, + rowHeight: 30, + onLayoutChange: function() {}, + cols: 12 + }; + + constructor(props) { + super(props); + + const layout = this.generateLayout(); + this.state = { layout }; + } + + generateDOM() { + return _.map(_.range(this.props.items), function(i) { + return ( +
    + {i} +
    + ); + }); + } + + generateLayout() { + const p = this.props; + const availableHandles = ["s", "w", "e", "n", "sw", "nw", "se", "ne"]; + + return _.map(new Array(p.items), function(item, i) { + const y = _.result(p, "y") || Math.ceil(Math.random() * 4) + 1; + return { + x: (i * 2) % 12, + y: Math.floor(i / 6) * y, + w: 2, + h: y, + i: i.toString(), + resizeHandles: _.shuffle(availableHandles).slice(0, _.random(1, availableHandles.length-1)) + }; + }); + } + + onLayoutChange(layout) { + this.props.onLayoutChange(layout); + } + + render() { + return ( + + {this.generateDOM()} + + ); + } +} + +if (process.env.STATIC_EXAMPLES === true) { + import("../test-hook.jsx").then(fn => fn.default(ResizableHandles)); +} From 2059870f4f7de39256c99f9be8c93dcc3d1affa1 Mon Sep 17 00:00:00 2001 From: Jacob Grafenstein Date: Sun, 3 Nov 2019 20:45:46 -0500 Subject: [PATCH 052/101] Pass event to onDrop callback --- lib/ReactGridLayout.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 20975776c..206711b53 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -84,7 +84,8 @@ export type Props = { x: number, y: number, w: number, - h: number + h: number, + e: Event }) => void, children: ReactChildrenArray> }; @@ -786,7 +787,7 @@ export default class ReactGridLayout extends React.Component { this.dragEnterCounter++; }; - onDrop = () => { + onDrop = (e: Event) => { const { droppingItem } = this.props; const { layout } = this.state; const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {}; @@ -796,7 +797,7 @@ export default class ReactGridLayout extends React.Component { this.removeDroppingPlaceholder(); - this.props.onDrop({ x, y, w, h }); + this.props.onDrop({ x, y, w, h, e }); }; render() { From 226a4bca011106c3261c78e77380bcb06ed9b941 Mon Sep 17 00:00:00 2001 From: Maksim Andreev Date: Thu, 7 Nov 2019 04:48:27 +0700 Subject: [PATCH 053/101] fix: forbid change layout on click without drag (#1044) --- lib/ReactGridLayout.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 20975776c..ce7bc1b9c 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -462,6 +462,8 @@ export default class ReactGridLayout extends React.Component { * @param {Element} node The current dragging DOM element */ onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) { + if (!this.state.activeDrag) return; + const { oldDragItem } = this.state; let { layout } = this.state; const { cols, preventCollision } = this.props; @@ -480,9 +482,8 @@ export default class ReactGridLayout extends React.Component { compactType(this.props), cols ); - if (this.state.activeDrag) { - this.props.onDragStop(layout, oldDragItem, l, null, e, node); - } + + this.props.onDragStop(layout, oldDragItem, l, null, e, node); // Set state const newLayout = compact(layout, compactType(this.props), cols); From 75d69d1db348e6a071401cb08aef35a240bff7a5 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Wed, 20 Nov 2019 04:59:02 -0500 Subject: [PATCH 054/101] update compatibility table (#1078) Version 0.17 and up uses getDerivedStateFromProps, not available in earlier versions of React. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 631fe637c..827c97154 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ RGL is React-only and does not require jQuery. |Version | Compatibility | |----------------|------------------| +| >= 0.17.0 | React 0.16 | | >= 0.11.3 | React 0.14 & v15 | | >= 0.10.0 | React 0.14 | | 0.8. - 0.9.2 | React 0.13 | From 09f22ffb76cc42494709d4cc312fac7a98ccc4e8 Mon Sep 17 00:00:00 2001 From: James Smith Date: Wed, 20 Nov 2019 04:59:22 -0500 Subject: [PATCH 055/101] Adding Hakkiri to list of projects that use react-grid-layout (#1077) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 827c97154..aa48bcc4f 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ RGL is React-only and does not require jQuery. - [Graphext](https://graphext.com/) - [Monday](https://support.monday.com/hc/en-us/articles/360002187819-What-are-the-Dashboards-) - [Quadency](https://quadency.com/) +- [Hakkiri](https://www.hakkiri.io) *Know of others? Create a PR to let me know!* From ed6d577131835a6f49a5f476612b309af7b60f83 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 20 Nov 2019 07:50:48 -0800 Subject: [PATCH 056/101] fix(github): use periodic-labeler to fix https://github.com/actions/labeler/issues/12 --- .github/workflows/label.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index b1797dc4a..35bb88022 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -1,13 +1,14 @@ -name: Labeler -on: [pull_request] - +--- +name: Pull request labeler +on: + schedule: + - cron: '*/5 * * * *' jobs: - label: - + labeler: runs-on: ubuntu-latest - # 'if' added due to https://github.com/actions/labeler/issues/12 steps: - - uses: actions/labeler@v2 - if: github.repository == 'STRML/react-grid-layout' - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" + - uses: paulfantom/periodic-labeler@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REPOSITORY: ${{ github.repository }} + LABEL_MAPPINGS_FILE: .github/labeler.yml From e3e0e8208d9e1fec2cc081df016481e0a4caebb7 Mon Sep 17 00:00:00 2001 From: Darek Kay Date: Wed, 20 Nov 2019 16:54:11 +0100 Subject: [PATCH 057/101] Do not mutate layouts prop (#1063) (#1064) --- lib/ResponsiveReactGridLayout.jsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 45791209d..1f5c99393 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -227,6 +227,7 @@ export default class ResponsiveReactGridLayout extends React.Component< const lastBreakpoint = this.state.breakpoint; const newCols: number = getColsFromBreakpoint(newBreakpoint, cols); + const newLayouts = { ...layouts }; // Breakpoint change if ( @@ -235,12 +236,12 @@ export default class ResponsiveReactGridLayout extends React.Component< this.props.cols !== cols ) { // Preserve the current layout if the current breakpoint is not present in the next layouts. - if (!(lastBreakpoint in layouts)) - layouts[lastBreakpoint] = cloneLayout(this.state.layout); + if (!(lastBreakpoint in newLayouts)) + newLayouts[lastBreakpoint] = cloneLayout(this.state.layout); // Find or generate a new layout. let layout = findOrGenerateResponsiveLayout( - layouts, + newLayouts, breakpoints, newBreakpoint, lastBreakpoint, @@ -257,10 +258,10 @@ export default class ResponsiveReactGridLayout extends React.Component< ); // Store the new layout. - layouts[newBreakpoint] = layout; + newLayouts[newBreakpoint] = layout; // callbacks - this.props.onLayoutChange(layout, layouts); + this.props.onLayoutChange(layout, newLayouts); this.props.onBreakpointChange(newBreakpoint, newCols); this.setState({ From d3f473010d3adb3313e1f0e475a8d62f3498d2ff Mon Sep 17 00:00:00 2001 From: Thanks Date: Wed, 20 Nov 2019 23:55:12 +0800 Subject: [PATCH 058/101] feat: react-resizable add transformScale (#1075) --- lib/GridItem.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index b94424b0c..9895669a8 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -397,7 +397,7 @@ export default class GridItem extends React.Component { child: ReactElement, position: Position ): ReactElement { - const { cols, x, minW, minH, maxW, maxH } = this.props; + const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props; // This is the max possible width - doesn't go to infinity because of the width of the window const maxWidth = this.calcPosition(0, 0, cols - x, 0).width; @@ -419,6 +419,7 @@ export default class GridItem extends React.Component { onResizeStop={this.onResizeStop} onResizeStart={this.onResizeStart} onResize={this.onResize} + transformScale={transformScale} > {child} @@ -467,6 +468,8 @@ export default class GridItem extends React.Component { */ onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => { if (!this.props.onDrag) return; + deltaX /= this.props.transformScale + deltaY /= this.props.transformScale const newPosition: PartialPosition = { top: 0, left: 0 }; From cffd456f6b8cf0b567a4aeb4c55e40f055a5c3c7 Mon Sep 17 00:00:00 2001 From: Varun Date: Thu, 21 Nov 2019 00:00:24 +0800 Subject: [PATCH 059/101] Fixed a minor bug which prevents showing 'Add +' (#1038) --- test/examples/6-dynamic-add-remove.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/examples/6-dynamic-add-remove.jsx b/test/examples/6-dynamic-add-remove.jsx index 4d20b864f..a7e693f10 100644 --- a/test/examples/6-dynamic-add-remove.jsx +++ b/test/examples/6-dynamic-add-remove.jsx @@ -24,7 +24,7 @@ export default class AddRemoveLayout extends React.PureComponent { y: 0, w: 2, h: 2, - add: i === (list.length - 1).toString() + add: i === (list.length - 1) }; }), newCounter: 0 From 7c6ef3e3354dfab30c89fe8b9313045969126332 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 20 Nov 2019 09:10:42 -0800 Subject: [PATCH 060/101] fix(GridItem): ensure locally set isDraggable/isResizable overrides globals (#1060) This also makes static items resizable/draggable if locally set, which is a nice option but will break backcompat. --- README.md | 8 ++++---- lib/ReactGridLayout.jsx | 18 +++++++++++------- lib/utils.js | 4 +++- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index aa48bcc4f..d33e2482e 100644 --- a/README.md +++ b/README.md @@ -289,7 +289,7 @@ containerPadding: ?[number, number] = margin, // if you like. rowHeight: ?number = 150, -// Configuration of a dropping element. Dropping element is a "virtual" element +// Configuration of a dropping element. Dropping element is a "virtual" element // which appears when you drag over some element from outside. // It can be changed by passing specific parameters: // i - id of an element @@ -313,9 +313,9 @@ transformScale: ?number = 1, // dragged over. preventCollision: ?boolean = false; -// If true, droppable elements (with `draggable={true}` attribute) +// If true, droppable elements (with `draggable={true}` attribute) // can be dropped on the grid. It triggers "onDrop" callback -// with position and event object as parameters. +// with position and event object as parameters. // It can be useful for dropping an element in a specific position // // NOTE: In case of using Firefox you should add @@ -415,7 +415,7 @@ are out of range. Any `` properties defined directly will take precedence over globally-set options. For example, if the layout has the property `isDraggable: false`, but the grid item has the prop `isDraggable: true`, the item -will be draggable. +will be draggable, even if the item is marked `static: true`. ```js { diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 0b200103c..047675d91 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -666,13 +666,17 @@ export default class ReactGridLayout extends React.Component { } = this.props; const { mounted, droppingPosition } = this.state; - // Parse 'static'. Any properties defined directly on the grid item will take precedence. - const draggable = Boolean( - !l.static && isDraggable && (l.isDraggable || l.isDraggable == null) - ); - const resizable = Boolean( - !l.static && isResizable && (l.isResizable || l.isResizable == null) - ); + // Determine user manipulations possible. + // If an item is static, it can't be manipulated by default. + // Any properties defined directly on the grid item will take precedence. + const draggable = + typeof l.isDraggable === "boolean" + ? l.isDraggable + : !l.static && isDraggable; + const resizable = + typeof l.isResizable === "boolean" + ? l.isResizable + : !l.static && isResizable; return ( Date: Fri, 29 Nov 2019 16:04:56 +0100 Subject: [PATCH 061/101] Update Readme.md code sample (#1086) Switch `var` to `const` --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d33e2482e..d1c302853 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ import GridLayout from 'react-grid-layout'; class MyFirstGrid extends React.Component { render() { // layout is an array of objects, see the demo for more complete usage - var layout = [ + const layout = [ {i: 'a', x: 0, y: 0, w: 1, h: 2, static: true}, {i: 'b', x: 1, y: 0, w: 3, h: 2, minW: 2, maxW: 4}, {i: 'c', x: 4, y: 0, w: 1, h: 2} @@ -173,7 +173,7 @@ import { Responsive as ResponsiveGridLayout } from 'react-grid-layout'; class MyResponsiveGrid extends React.Component { render() { // {lg: layout1, md: layout2, ...} - var layouts = getLayoutsFromSomewhere(); + const layouts = getLayoutsFromSomewhere(); return ( Date: Sun, 8 Dec 2019 22:53:33 +0200 Subject: [PATCH 062/101] Replaces .includes with a regex for a better IE compatibility (#1096) * Replaces .includes with a regex for a better IE compatibility This is to address: https://github.com/STRML/react-grid-layout/issues/76 * Refactoring for better code readability --- lib/ReactGridLayout.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 047675d91..90c9c73de 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -101,7 +101,7 @@ const layoutClassName = "react-grid-layout"; let isFirefox = false; // Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator try { - isFirefox = navigator.userAgent.toLowerCase().includes("firefox"); + isFirefox = /firefox/i.test(navigator.userAgent); } catch (e) { /* Ignore */ } @@ -721,7 +721,7 @@ export default class ReactGridLayout extends React.Component { // to avoid unpredictable jumping of a dropping placeholder if ( isFirefox && - !e.nativeEvent.target.className.includes(layoutClassName) + e.nativeEvent.target.className.indexOf(layoutClassName) === -1 ) { return false; } From 865a83f1ecc2fa66d3b3202a12b64f0448283ada Mon Sep 17 00:00:00 2001 From: Greg Beaty Date: Mon, 13 Jan 2020 12:55:32 -0500 Subject: [PATCH 063/101] Fix handling of width changes (#1090) The width change event was ignoring dynamic changes to breakpoints and columns because it was checking current props against itself. This bug was introduced when the library refactored the use of the deprecated componentWillRecieveProps in favor of componentDidUpdate. Fixes #1083 --- lib/ResponsiveReactGridLayout.jsx | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 1f5c99393..360a36837 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -203,7 +203,7 @@ export default class ResponsiveReactGridLayout extends React.Component< !isEqual(this.props.breakpoints, prevProps.breakpoints) || !isEqual(this.props.cols, prevProps.cols) ) { - this.onWidthChange(this.props); + this.onWidthChange(prevProps); } } @@ -219,11 +219,11 @@ export default class ResponsiveReactGridLayout extends React.Component< * When the width changes work through breakpoints and reset state with the new width & breakpoint. * Width changes are necessary to figure out the widget widths. */ - onWidthChange(nextProps: Props<*>) { - const { breakpoints, cols, layouts, compactType } = nextProps; + onWidthChange(prevProps: Props<*>) { + const { breakpoints, cols, layouts, compactType } = this.props; const newBreakpoint = - nextProps.breakpoint || - getBreakpointFromWidth(nextProps.breakpoints, nextProps.width); + this.props.breakpoint || + getBreakpointFromWidth(this.props.breakpoints, this.props.width); const lastBreakpoint = this.state.breakpoint; const newCols: number = getColsFromBreakpoint(newBreakpoint, cols); @@ -232,8 +232,8 @@ export default class ResponsiveReactGridLayout extends React.Component< // Breakpoint change if ( lastBreakpoint !== newBreakpoint || - this.props.breakpoints !== breakpoints || - this.props.cols !== cols + prevProps.breakpoints !== breakpoints || + prevProps.cols !== cols ) { // Preserve the current layout if the current breakpoint is not present in the next layouts. if (!(lastBreakpoint in newLayouts)) @@ -252,7 +252,7 @@ export default class ResponsiveReactGridLayout extends React.Component< // This adds missing items. layout = synchronizeLayoutWithChildren( layout, - nextProps.children, + this.props.children, newCols, compactType ); @@ -271,15 +271,15 @@ export default class ResponsiveReactGridLayout extends React.Component< }); } - const margin = getIndentationValue(nextProps.margin, newBreakpoint); + const margin = getIndentationValue(this.props.margin, newBreakpoint); const containerPadding = getIndentationValue( - nextProps.containerPadding, + this.props.containerPadding, newBreakpoint ); //call onWidthChange on every change of width, not only on breakpoint changes this.props.onWidthChange( - nextProps.width, + this.props.width, margin, newCols, containerPadding From 87ba2dfefe4bf08839cbee7ecb3c56ac85ef082d Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Mon, 13 Jan 2020 15:29:52 -0500 Subject: [PATCH 064/101] chore(pkg): upgrade devDependencies --- .flowconfig | 2 +- lib/components/WidthProvider.jsx | 4 +- package.json | 48 +- yarn.lock | 1845 ++++++++++++++++-------------- 4 files changed, 1028 insertions(+), 871 deletions(-) diff --git a/.flowconfig b/.flowconfig index 794b4b18d..7fe1bd498 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,5 @@ [version] -0.110.1 +0.115.0 [ignore] diff --git a/lib/components/WidthProvider.jsx b/lib/components/WidthProvider.jsx index bc770485f..2920a54da 100644 --- a/lib/components/WidthProvider.jsx +++ b/lib/components/WidthProvider.jsx @@ -10,9 +10,9 @@ type WPProps = { style?: Object }; -type WPState = { +type WPState = {| width: number -}; +|}; /* * A simple HOC that provides facility for listening to container resizes. diff --git a/package.json b/package.json index bd3b152ad..24d9f1ad4 100644 --- a/package.json +++ b/package.json @@ -43,40 +43,40 @@ "react-resizable": "^1.9.0" }, "devDependencies": { - "@babel/cli": "^7.6.4", - "@babel/core": "^7.6.4", - "@babel/plugin-proposal-class-properties": "^7.5.5", - "@babel/plugin-transform-flow-comments": "^7.6.0", - "@babel/preset-env": "^7.6.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-react": "^7.0.0", + "@babel/cli": "^7.8.0", + "@babel/core": "^7.8.0", + "@babel/plugin-proposal-class-properties": "^7.8.0", + "@babel/plugin-transform-flow-comments": "^7.8.0", + "@babel/preset-env": "^7.8.2", + "@babel/preset-flow": "^7.8.0", + "@babel/preset-react": "^7.8.0", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.0.6", "babel-plugin-espower": "^3.0.1", - "css-loader": "^3.2.0", - "ejs": "^2.7.1", - "eslint": "^6.4.0", - "eslint-plugin-flowtype": "^4.3.0", - "eslint-plugin-mocha": "^6.2.0", - "eslint-plugin-react": "^7.14.3", + "css-loader": "^3.4.2", + "ejs": "^3.0.1", + "eslint": "^6.8.0", + "eslint-plugin-flowtype": "^4.6.0", + "eslint-plugin-mocha": "^6.2.2", + "eslint-plugin-react": "^7.17.0", "exports-loader": "^0.7.0", - "flow-bin": "^0.110.1", + "flow-bin": "^0.115.0", "husky": "^3.0.9", "imports-loader": "^0.8.0", "jest-cli": "^24.9.0", - "lint-staged": "^9.2.5", + "lint-staged": "^9.5.0", "lodash": "^4.17.5", "opener": "^1.4.3", - "prettier": "^1.18.2", - "react": "^16.11.0", - "react-dom": "^16.11.0", - "react-hot-loader": "^4.12.13", + "prettier": "^1.19.1", + "react": "^16.12.0", + "react-dom": "^16.12.0", + "react-hot-loader": "^4.12.18", "react-transform-hmr": "^1.0.2", - "style-loader": "^1.0.0", - "webpack": "^4.41.2", - "webpack-cli": "^3.3.9", - "webpack-dev-server": "^3.9.0" + "style-loader": "^1.1.2", + "webpack": "^4.41.5", + "webpack-cli": "^3.3.10", + "webpack-dev-server": "^3.10.1" }, "publishConfig": { "registry": "https://registry.npmjs.org" @@ -93,4 +93,4 @@ "git add" ] } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index f91e3b771..bbefea122 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,763 +2,833 @@ # yarn lockfile v1 -"@babel/cli@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.4.tgz#9b35a4e15fa7d8f487418aaa8229c8b0bc815f20" - integrity sha512-tqrDyvPryBM6xjIyKKUwr3s8CzmmYidwgdswd7Uc/Cv0ogZcuS1TYQTLx/eWKP3UbJ6JxZAiYlBZabXm/rtRsQ== +"@babel/cli@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.0.tgz#e9ed4c3dbb163de5034c18979c118ed1aa294e05" + integrity sha512-/zOi56gIH3jBmnrfUvVf8MOMqf3hfFou2ONRYdRRpgnBSi0dUkiO+usu44YHsOEJqqwPkijBsiDKscQizouoag== dependencies: - commander "^2.8.1" + commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" glob "^7.0.0" lodash "^4.17.13" - mkdirp "^0.5.1" - output-file-sync "^2.0.0" + make-dir "^2.1.0" slash "^2.0.0" source-map "^0.5.0" optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/core@^7.1.0", "@babel/core@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" - integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.4" - "@babel/helpers" "^7.6.2" - "@babel/parser" "^7.6.4" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.3" - "@babel/types" "^7.6.3" - convert-source-map "^1.1.0" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.0.tgz#8c98d4ac29d6f80f28127b1bc50970a72086c5ac" + integrity sha512-AN2IR/wCUYsM+PdErq6Bp3RFTXl8W0p9Nmymm7zkpsCmh+r/YYcckaCGpU8Q/mEKmST19kkGRaG42A/jxOWwBA== + dependencies: + "@babel/highlight" "^7.8.0" + +"@babel/compat-data@^7.8.0", "@babel/compat-data@^7.8.1": + version "7.8.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.1.tgz#fc0bbbb7991e4fb2b47e168e60f2cc2c41680be9" + integrity sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw== + dependencies: + browserslist "^4.8.2" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.0.tgz#fd273d4faf69cc20ee3ccfd32d42df916bb4a15c" + integrity sha512-3rqPi/bv/Xfu2YzHvBz4XqMI1fKVwnhntPA1/fjoECrSjrhbOCxlTrbVu5gUtr8zkxW+RpkDOa/HCW93gzS2Dw== + dependencies: + "@babel/code-frame" "^7.8.0" + "@babel/generator" "^7.8.0" + "@babel/helpers" "^7.8.0" + "@babel/parser" "^7.8.0" + "@babel/template" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" + convert-source-map "^1.7.0" debug "^4.1.0" + gensync "^1.0.0-beta.1" json5 "^2.1.0" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" - integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4", "@babel/generator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.0.tgz#40a1244677be58ffdc5cd01e22634cd1d5b29edf" + integrity sha512-2Lp2e02CV2C7j/H4n4D9YvsvdhPVVg9GDIamr6Tu4tU35mL3mzOrzl1lZ8ZJtysfZXh+y+AGORc2rPS7yHxBUg== dependencies: - "@babel/types" "^7.6.3" + "@babel/types" "^7.8.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/helper-annotate-as-pure@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.0.tgz#334ae2cb801e2381509631a5caa1ac6ab1c5016a" + integrity sha512-WWj+1amBdowU2g18p3/KUc1Y5kWnaNm1paohq2tT4/RreeMNssYkv6ul9wkE2iIqjwLBwNMZGH4pTGlMSUqMMg== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.0" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.0.tgz#c2237beb110f64f592dddcabef1098e9d766ef88" + integrity sha512-KbBloNiBHM3ZyHg1ViDRs4QcnAunwMJ+rLpAEA8l3cWb3Z1xof7ag1iHvX16EwhUfaTG3+YSvTRPv4xHIrseUQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.8.0" + "@babel/types" "^7.8.0" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" - integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== +"@babel/helper-builder-react-jsx@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.0.tgz#4b9111eb862f5fd8840c37d200610fa95ab0aad8" + integrity sha512-Zg7VLtZzcAHoQ13S0pEIGKo8OAG3s5kjsk/4keGmUeNuc810T9fVp6izIaL8ZVeAErRFWJdvqFItY3QMTHMsSg== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.8.0" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@babel/helper-call-delegate@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.0.tgz#1cd725c5444be0ce59dbfa47b6ac5e9772168c67" + integrity sha512-Vi8K1LScr8ZgLicfuCNSE7JWUPG/H/9Bw9zn+3vQyy4vA54FEGTCuUTOXCFwmBM93OD6jHfjrQ6ZnivM5U+bHg== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-hoist-variables" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" -"@babel/helper-create-class-features-plugin@^7.5.5": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" - integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== +"@babel/helper-compilation-targets@^7.8.0": + version "7.8.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.1.tgz#309da97e93e6ca74896393d0c8da7af39cb4cea8" + integrity sha512-Fsrljg8DHSdnKSzC0YFopX7lseRpVfWMYuC1Dnvf7tw972E2KDjZ4XEaqjO9aJL0sLcG4KNRXxowDxHYIcZ+Cw== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/compat-data" "^7.8.1" + browserslist "^4.8.2" + invariant "^2.2.4" + levenary "^1.1.0" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.0.tgz#b3ddf557ed4656e0d296c3b0f3fcd381ea8de72c" + integrity sha512-ctCvqYBTlwEl2uF4hCxE0cd/sSw71Zfag0jKa39y4HDLh0BQ4PVBX1384Ye8GqrEZ69xgLp9fwPbv3GgIDDF2Q== + dependencies: + "@babel/helper-function-name" "^7.8.0" + "@babel/helper-member-expression-to-functions" "^7.8.0" + "@babel/helper-optimise-call-expression" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-replace-supers" "^7.8.0" + "@babel/helper-split-export-declaration" "^7.8.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.0.tgz#ae551572b840189a7b94e39eddc1a68d355974eb" + integrity sha512-vJj2hPbxxLUWJEV86iZiac5curAnC3ZVc+rFmFeWZigUOcuCPpbF+KxoEmxrkmuCGylHFF9t4lkpcDUcxnhQ5g== + dependencies: + "@babel/helper-regex" "^7.8.0" + regexpu-core "^4.6.0" -"@babel/helper-define-map@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" - integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg== +"@babel/helper-define-map@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.0.tgz#d3180691fa189fc147d411deaa029305c1470dfe" + integrity sha512-Go06lUlZ4YImNEmdyAH5iO38yh5mbpOPSwA2PtV1vyczFhTZfX0OtzkiIL2pACo6AOYf89pLh42nhhDrqgzC3A== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.5.5" + "@babel/helper-function-name" "^7.8.0" + "@babel/types" "^7.8.0" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== +"@babel/helper-explode-assignable-expression@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.0.tgz#a2ded9298a5dc9df0a8ec65ac12e4745f9af2882" + integrity sha512-w4mRQqKAh4M7BSLwvDMm8jYFroEzpqMCtXDhFHP+kNjMIQWpbC6b0Q/RUQsJNSf54rIx6XMdci1Stf60DWw+og== dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-function-name@^7.1.0", "@babel/helper-function-name@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.0.tgz#dde5cf0d6b15c21817a67dd66fe7350348e023bf" + integrity sha512-x9psucuU0Xalw+0Vpr2FYJMLB7/KnPSLZhlkUyOGbYAWRDfmtZBrguYpJYiaNCRV7vGkYjO/gF6/J6yMvdWTDw== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-get-function-arity" "^7.8.0" + "@babel/template" "^7.8.0" + "@babel/types" "^7.8.0" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== +"@babel/helper-get-function-arity@^7.0.0", "@babel/helper-get-function-arity@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.0.tgz#90977f61d76d2225d1ae0208def7df22ea92792e" + integrity sha512-eUP5grliToMapQiTaYS2AAO/WwaCG7cuJztR1v/a1aPzUzUeGt+AaI9OvLATc/AfFkF8SLJ10d5ugGt/AQ9d6w== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.0" -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== +"@babel/helper-hoist-variables@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.0.tgz#693586b56487e60fff9d9c7074f4a86e1a8af348" + integrity sha512-jDl66KvuklTXUADcoXDMur1jDtAZUZZkzLIaQ54+z38ih8C0V0hC56hMaoVoyoxN60MwQmmrHctBwcLqP0c/Lw== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.8.0" -"@babel/helper-member-expression-to-functions@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" - integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== +"@babel/helper-member-expression-to-functions@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.0.tgz#50d0ed445d2da11beb60e2dbc2c428254bd5a4ae" + integrity sha512-0m1QabGrdXuoxX/g+KOAGndoHwskC70WweqHRQyCsaO67KOEELYh4ECcGw6ZGKjDKa5Y7SW4Qbhw6ly4Fah/jQ== dependencies: - "@babel/types" "^7.5.5" + "@babel/types" "^7.8.0" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-module-imports@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.0.tgz#076edda55d8cd39c099981b785ce53f4303b967e" + integrity sha512-ylY9J6ZxEcjmJaJ4P6aVs/fZdrZVctCGnxxfYXwCnSMapqd544zT8lWK2qI/vBPjE5gS0o2jILnH+AkpsPauEQ== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.0" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" - integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== +"@babel/helper-module-transforms@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.0.tgz#a3cbe4ac91b101c4b6db278af0c868fe7091ebae" + integrity sha512-fvGhX4FY7YwRdWW/zfddNaKpYl8TaA8hvwONIYhv1/a1ZbgxbTrjsmH6IGWUgUNki7QzbpZ27OEh88sZdft3YA== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.5.5" + "@babel/helper-module-imports" "^7.8.0" + "@babel/helper-simple-access" "^7.8.0" + "@babel/helper-split-export-declaration" "^7.8.0" + "@babel/template" "^7.8.0" + "@babel/types" "^7.8.0" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== +"@babel/helper-optimise-call-expression@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.0.tgz#3df62773cf210db9ed34c2bb39fece5acd1e1733" + integrity sha512-aiJt1m+K57y0n10fTw+QXcCXzmpkG+o+NoQmAZqlZPstkTE0PZT+Z27QSd/6Gf00nuXJQO4NiJ0/YagSW5kC2A== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.0" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.0.tgz#59ec882d43c21c544ccb51decaecb306b34a8231" + integrity sha512-+hAlRGdf8fHQAyNnDBqTHQhwdLURLdrCROoWaEQYiQhk2sV9Rhs+GoFZZfMJExTq9HG8o2NX3uN2G90bFtmFdA== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== +"@babel/helper-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.0.tgz#dde1d2d2070e292c19a8702075e945923aa1678b" + integrity sha512-haD8fRsPtyFZkbtxBIaGBBHRtbn0YsyecdYrxNgO0Bl6SlGokJPQX9M2tDuVbeQBYHZVLUPMSwGQn4obHevsMQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== +"@babel/helper-remap-async-to-generator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.0.tgz#034c21154dd12472717cfb31faf1713426fbc435" + integrity sha512-+aKyBd4oHAaIZgOLq/uLjkUz7ExZ0ppdNBc8Qr72BmtKNAy3A6EJa/ifjj0//CIzQtUDPs3E6HjKM2cV6bnXsQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.0" + "@babel/helper-wrap-function" "^7.8.0" + "@babel/template" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/helper-replace-supers@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.0.tgz#d83cb117edb820eebe9ae6c970a8ad5eac09d19f" + integrity sha512-R2CyorW4tcO3YzdkClLpt6MS84G+tPkOi0MmiCn1bvYVnmDpdl9R15XOi3NQW2mhOAEeBnuQ4g1Bh7pT2sX8fg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.0" + "@babel/helper-optimise-call-expression" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/helper-simple-access@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.0.tgz#a5095ab031f759995134183fa7719aa85f0ec962" + integrity sha512-I+7yKZJnxp7VIC2UFzXfVjLiJuU16rYFF59x27c+boINkO/pLETgZcoesCryg9jmU4jxEa0foFueW+2wjc9Gsw== + dependencies: + "@babel/template" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/helper-split-export-declaration@^7.4.4", "@babel/helper-split-export-declaration@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.0.tgz#ed10cb03b07454c0d40735fad4e9c9711e739588" + integrity sha512-YhYFhH4T6DlbT6CPtVgLfC1Jp2gbCawU/ml7WJvUpBg01bCrXSzTYMZZXbbIGjq/kHmK8YUATxTppcRGzj31pA== + dependencies: + "@babel/types" "^7.8.0" + +"@babel/helper-wrap-function@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.0.tgz#a26751c7b0be765a0db10162c6de485402cb505c" + integrity sha512-2j6idN2jt8Y+8nJ4UPN/6AZa53DAkcETMVmroJQh50qZc59PuQKVjgOIIqmrLoQf6Ia9bs90MHRcID1OW5tfag== + dependencies: + "@babel/helper-function-name" "^7.8.0" + "@babel/template" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/helpers@^7.6.2", "@babel/helpers@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.0.tgz#3d3e6e08febf5edbbf63b1cf64395525aa3ece37" + integrity sha512-srWKpjAFbiut5JoCReZJ098hLqoZ9HufOnKZPggc7j74XaPuQ+9b3RYPV1M/HfjL63lCNd8uI1O487qIWxAFNA== + dependencies: + "@babel/template" "^7.8.0" + "@babel/traverse" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/highlight@^7.0.0", "@babel/highlight@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.0.tgz#4cc003dc10359919e2e3a1d9459150942913dd1a" + integrity sha512-OsdTJbHlPtIk2mmtwXItYrdmalJ8T0zpVzNAbKSkHshuywj7zb29Y09McV/jQsQunc/nEyHiPV2oy9llYMLqxw== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" -"@babel/helper-replace-supers@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" - integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4", "@babel/parser@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.0.tgz#54682775f1fb25dd29a93a02315aab29a6a292bb" + integrity sha512-VVtsnUYbd1+2A2vOVhm4P2qNXQE8L/W859GpUHfUcdhX8d3pEKThZuIr6fztocWx9HbK+00/CR0tXnhAggJ4CA== -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@babel/plugin-proposal-async-generator-functions@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.0.tgz#92520961d1b2220f0f2e6b576b7896698cd747f9" + integrity sha512-8vIQf8JYced7gCeKDsGETNGKE+zdD/JmP1LBlRn+w3UXc1aSpZv2Y330bB/fnOEbUgPbuFv+IEi+gopg+Fu0kQ== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-remap-async-to-generator" "^7.8.0" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@babel/plugin-proposal-class-properties@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.0.tgz#bb3325d9166c80db8f2e15fc0bb6d61d7300e373" + integrity sha512-eVGj5NauhKCwABQjKIYncMQh9HtFsBrIcdsxImbTdUIaGnjymsVsBGmDQaDuPL/WCjYn6vPL4d+yvI6zy+VkrQ== dependencies: - "@babel/types" "^7.4.4" + "@babel/helper-create-class-features-plugin" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== +"@babel/plugin-proposal-dynamic-import@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.0.tgz#bbd7c00f351b55f02aec0fe9b9c42ad3f659b176" + integrity sha512-YzMq0AqeTR4Mh2pz3GrCWqhcEV38HgUMMR/56/YR5GPc4Y2p1KJ4Le6j92vMnW8TJqVj+qJz/KDNglpMeww9Yg== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/helpers@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" - integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== +"@babel/plugin-proposal-json-strings@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.0.tgz#99fd838398c32f4d96117770f7f3591062e72607" + integrity sha512-pSpuhwn926vtNeUH2FHx1OzIXaUMgklG0MzlFZJVEg37fB904gOxN572NgBae+KDwFyZDpkLMyEkVA011lBJrQ== dependencies: - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.2" - "@babel/types" "^7.6.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.0.tgz#1ef61239ed2241746bc4936fc643a5c6f1cb24fa" + integrity sha512-cQMI+RQdcK2IyMm13NKKFCYfOSBUtFxEeRBOdFCi2Pubv/CpkrCubc/ikdeKMT6Lu+uQ+lNSDEJvDCOQZkUy0g== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" - integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@babel/plugin-proposal-object-rest-spread@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.0.tgz#ca8ac673d32db774c2154a4c7517fd46ec45e9cf" + integrity sha512-SjJ2ZXCylpWC+5DTES0/pbpNmw/FnjU/3dF068xF0DU9aN+oOKah+3MCSFcb4pnZ9IwmxfOy4KnbGJSQR+hAZA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" - integrity sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A== +"@babel/plugin-proposal-optional-catch-binding@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.0.tgz#6a7dee0bfd72751e3f1386ba4da03e6fa82fcd95" + integrity sha512-tHP3eez6TrpPJYttBZ/6uItRbIuXUIDpQ9xwvzKwR+RboWGMJ7WzFC5dDJ3vjLuCx0/DG1tM0MVkmgcBybth9w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.5" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-dynamic-import@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" - integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== +"@babel/plugin-proposal-optional-chaining@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.0.tgz#d05e4fa3c1e4ef18eaea6bc92a4b06f95eaf1df5" + integrity sha512-PNBHxPHE91m+LLOdGwlvyGicWfrMgiVwng5WdB3CMjd61+vn3vPw0GbgECIAUCZnyi7Jqs5htUIZRztGuV8/5g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-unicode-property-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.0.tgz#9e1c0481863485052bae8ac024fca7028e24ee31" + integrity sha512-3oK0Qt5w4arb+es3rWBribDbtc0TYJP7dFZ1dXcYul3cXderqfIOoSx9YUC1oD208nJwJO/++fvrgLmkYSbe8A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" - integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.0.tgz#e6c3dba5a61ecf72ba00a3f3f5f1234989a58e6a" + integrity sha512-a8w8k7pK8nYhem07rXdAq03T+DlTX8LFojUptrh9JEx80AgLqGiuoFIyQOGTWif39kFnDOQqbzl1s6KQqrfV+A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.0.tgz#3a6c1cd36af923db602df83c5aa72e08bb14353a" + integrity sha512-Mx2RzpCHJaBfmFdA2abXDKRHVJdzJ6R0Wqwb6TxCgM7NRR5wcC4cyiAsRL7Ga+lwG8GG1cKvb+4ENjic8y15jA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" - integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== +"@babel/plugin-syntax-flow@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.0.tgz#e5f92b4e21e4c8f7eb25b75f312b427799693bae" + integrity sha512-MDK9WdjDccrxzz+4sthpSDnqdf5McJwTtfBYGitOweC/j0Zg6e8wHmP4RGLTeyGYe/IySoRgKC5hvSm6ddrNRw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.0.tgz#7f798eb7e8cfd3821388120679d23d530bae6e53" + integrity sha512-LPykaAbH86L5NnDfCRSpNxtEHZk+6GaFzXfWEFU/6R4v69EXQr6GOp7hwH+Uw0QlYVN++s6TukTJ3flFcspahA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-syntax-jsx@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.0.tgz#657a0306e2c74de84e0dcf8b6cb024ed990224fc" + integrity sha512-zLDUckAuKeOtxJhfNE0TlR7iEApb2u7EYRlh5cxKzq6A5VzUbYEdyJGJlug41jDbjRbHTtsLKZUnUcy/8V3xZw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.0.tgz#5d8f24ecffa4ae74164e53264953c5ea8ba6d149" + integrity sha512-Rv2hnBToN6rbA9hO2a4vtwXZLzNa+TWkoSIMMvUezFz5+D9NPeX7SFrArwtFzzbwndmWiqboTr5rNpzAz0MPpA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.0.tgz#9b37d580d459682364d8602494c69145b394fd4c" + integrity sha512-dt89fDlkfkTrQcy5KavMQPyF2A6tR0kYp8HAnIoQv5hO34iAUffHghP/hMGd7Gf/+uYTmLQO0ar7peX1SUWyIA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.0.tgz#180c7bdd6b7fd81cc6d18269de12d5ddd60cabce" + integrity sha512-EIgJVy+u1RvR2gJfX4ReLwAupO/twllUue1wPrRxhu18+eC3bGTEcOSXLQdaE9ya9NG1rE0eQs0GSiloUGFEwg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.0.tgz#c40f4d4d6a4f5e71d2bfd949b0a7f1e1e6792fe0" + integrity sha512-LV1c+TTAO8Vawe3t+WXBHYWbS7endP8MSlqKPKEZOyWPEJX2akl3jfvFG828/OE7RpyoC3JXfLJDFj/jN7A8hg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@babel/plugin-syntax-top-level-await@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.0.tgz#8d45e3d68a1e26bce79c51b08dd9126290686207" + integrity sha512-iXR/Cw32fMfWlD1sK2zD/nXtuLStkalRv+xee6VrX84CFrn2LKwb/EOs/4UaDNUpUsws8YZYKeQjPagacFquug== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-transform-arrow-functions@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.0.tgz#d98b7c425fed35f70cb85024a2b10008936631b3" + integrity sha512-9KfteDp9d8cF388dxFMOh3Dum41qpOVUPVjQhXGd1kPyQBE05FJgYndiAriML2yhMIbZ2bjgweh2nnvBXDH2MQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-async-to-generator@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" - integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== +"@babel/plugin-transform-async-to-generator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.0.tgz#6561fb6445d89bc20b72150430944cad0e501e4a" + integrity sha512-9dvBvJnEdsDWYMrykoMyLNVRPGoub6SFlARtsYgSQ1riTjnyBjhctihSME4XsSku86F59PDeFpC9PCU+9I154w== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-module-imports" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-remap-async-to-generator" "^7.8.0" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-transform-block-scoped-functions@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.0.tgz#2ea8a33ec78825ce91244980389cb96d4c6dc6bd" + integrity sha512-bim6gUfHq2kPN+aQst33ZEMeglpaUXAo6PWTZvOA8BOnWpNKgZcUzBvpZhh2ofL6YhZgzGoRwVVfzwynDEf47g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-block-scoping@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz#6e854e51fbbaa84351b15d4ddafe342f3a5d542a" - integrity sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw== +"@babel/plugin-transform-block-scoping@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.0.tgz#f6a81bc8c76dbbd202b718cb9e681a27f1d0af8f" + integrity sha512-FKTK4hzg7W950Yu9iqMl12WBixCmusMc5HBt3/ErvpFLnvr3/6mu/EBTZoCEJ0mw/lQUDfU01vTcZY9oEahlMg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" - integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" +"@babel/plugin-transform-classes@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.0.tgz#eb4699613b3ea3ccaf095bb0447dac55f7454fc9" + integrity sha512-18RLDwKtGXCLLbf5V03GojebPH7dKYCmIBqQGhgfZDoYsyEzR9kMZ6IxlJP72K5ROC9ADa4KPI6ywuh7NfQOgQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.0" + "@babel/helper-define-map" "^7.8.0" + "@babel/helper-function-name" "^7.8.0" + "@babel/helper-optimise-call-expression" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-replace-supers" "^7.8.0" + "@babel/helper-split-export-declaration" "^7.8.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-transform-computed-properties@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.0.tgz#c86c200ea42cbecda754fdf636a04dfbf6371cc7" + integrity sha512-FaODHuQRdnWFVwxLPlTN85Lk/aitfvQBHTXahf58FnatCynfhkeNUO8ID+AqAxY4IJsZjeH6OnKDzcGfgKJcVw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-destructuring@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" - integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== +"@babel/plugin-transform-destructuring@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.0.tgz#579d09e8dabf825cc3ac1524414ff99669f0abf9" + integrity sha512-D+69HT//cE86aBTLULzSBFLC5A7HcPQzJPiny6P4SLHkDF750MylRKO3iWvdgvb+OSp5dOrOxwXajvaxk1ZfYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-dotall-regex@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" - integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== +"@babel/plugin-transform-dotall-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.0.tgz#7e9e439e85219be091c5dbf1be138320600d1172" + integrity sha512-pq/XLkDB4MPvTe9ktHJInfWksalXogrIGRZJUG7RiDXhEfdNrlducoMPbACZQuCFtelVgVpD0VyreiY0l38G7g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-duplicate-keys@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" - integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== +"@babel/plugin-transform-duplicate-keys@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.0.tgz#913b3fdb5cbd35e3208b017dac5ef335ef6b0d65" + integrity sha512-REtYWvpP4TDw4oVeP01vQJcAeewjgk8/i7tPFP11vUjvarUGGyxJLeq79WEnIdnKPQJirZaoDRT4kEWEdSWkDw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@babel/plugin-transform-exponentiation-operator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.0.tgz#72ddf89e1acfac75482992b8976df62f8ad813c4" + integrity sha512-vaDgF3gPLzVcoe3UZqnra6FA7O797sZc+UCHPd9eQTI34cPtpCA270LzopIXS3Fhc3UmFrijLmre9mHTmUKVgg== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-flow-comments@^7.6.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.6.3.tgz#3c192ae127dcce166e469c1449fa7a5831d38cd4" - integrity sha512-FUhJ0WozfTloG+0X5d7wzYw6YfjC6VzbSqljDWOutcvgcVM7FH8ax2Z/ObCp5Jt4uuuuknplagKP21tWFVpxMw== +"@babel/plugin-transform-flow-comments@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.8.0.tgz#497ee9443794eeccc3522998e6a4a6d611031f6c" + integrity sha512-lcGmxUe2y0bTMWH6v25cYe1lbqXRc/W8pqYBQUfNWbe5tb6qOjwXwQ43pUhfjyuaioKzgHH2UzFxchDVPnUhmQ== dependencies: - "@babel/generator" "^7.6.3" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/generator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-flow" "^7.8.0" -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz#8110f153e7360cfd5996eee68706cfad92d85256" - integrity sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg== +"@babel/plugin-transform-flow-strip-types@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.0.tgz#d35294e7be31f2063f6e3a5ec6146c28efb50db1" + integrity sha512-yKcww1yWfAHWk4R7OeU0YnrWEIrSodFr1TibfkrP8t0RDXSyGIDnahz8lzXagNT/XlZC3sWpsYXhty9xAU3ULQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-flow" "^7.8.0" -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== +"@babel/plugin-transform-for-of@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.0.tgz#4a2960b76d42f4cc8a821edb66f4a7eadf6042ce" + integrity sha512-9j9g0qViCAo8E5qCBSaQdghymn7A9bRXSfS9jU7oLpYccYFZg9A+1KO8X+HV7fhJYH6mZ+e7MRg4p3sLo+RG6Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@babel/plugin-transform-function-name@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.0.tgz#9c5fdb20967f151c0e06419621d56d63120653c9" + integrity sha512-YL8Ol54UKeIyY1uUGfry+B9ppXAB3aVBB1gG9gxqhg/OBCPpV2QUNswmjvfmyXEdaWv8qODssBgX7on792h44w== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-transform-literals@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.0.tgz#bda7a4773293ee9b687174eb4e1f91fe37ed576f" + integrity sha512-7UDPKG+uVltsZt98Hw+rMbLg772r8fQC6YJ2fNDckcpAXgIWqQbMCmCpfYo0hBNhdhqocM73auk4P/zziQshQw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@babel/plugin-transform-member-expression-literals@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.0.tgz#da3e170e99c2fd1110785cc6146aa2f45429f664" + integrity sha512-lJSdaWR56wmrosCiyqKFRVnLrFYoVAk2mtZAyegt7akeJky/gguv0Rukx9GV3XwHGuM1ZPE06cZMjNlcLp8LrQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-amd@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" - integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== +"@babel/plugin-transform-modules-amd@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.0.tgz#09f4fb47a2a7d4471866afeb446bc9a068a091b0" + integrity sha512-mFr1O3TaDL4XozM3AzNPz9AsxzzjTxwn4aOShYP5TlO+4rufvjagV2KKDTPMZTQm1ZA/C/PxJDsDekEnnUGz5A== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" - integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== +"@babel/plugin-transform-modules-commonjs@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.0.tgz#69c682a41905f8885ffb9c37ab34ad1fe8ec3fd7" + integrity sha512-w2g8tmL7NgBYt6alc8YawMcmPiYqnVvvI0kLB++VOUOssqdJMAkfQOMGV+2M8H5uhJYDaAghAVMUYps3s+jMrw== dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-module-transforms" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-simple-access" "^7.8.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" - integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== +"@babel/plugin-transform-modules-systemjs@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.0.tgz#b0ff0106a7f8a465a75ce5167c88b648770b0a0c" + integrity sha512-tKF9KLiIsiKyWTVU0yo+NcNAylGn7euggYwXw63/tMxGtDTPsB9Y7Ecqv4EoXEwtoJOJ0Lewf17oaWQtindxIA== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.8.0" + "@babel/helper-module-transforms" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-transform-modules-umd@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.0.tgz#edc1a7a587a31a185070421f97ae3798b15df9b7" + integrity sha512-lAwNfXwmfTy7fl2XOyoVpMXnLkJANgH0vdSYNFcS4RuJPBtHfunGA+Y0L7wsHmfPzyVYt8sUglLjaWtdZMNJNg== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz#aaa6e409dd4fb2e50b6e2a91f7e3a3149dbce0cf" - integrity sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.0.tgz#718e168e7f5ab83fa7e4dfd0cf1831804fc016f0" + integrity sha512-kq1rxQ1HviCP13SMGZ4WjBBpdogTGK7yn/g/+p+g1AQledgHOWKVeMY1DwKYGlGJ/grDGTOqpJLF1v3Sb7ghKA== dependencies: - regexpu-core "^4.6.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.0" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@babel/plugin-transform-new-target@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.0.tgz#54d126788abc648cab27bc9b74a8306b4158f70f" + integrity sha512-hH1Afz9Xy/wkcxhoI0vYw48kTBJqYUhMmhp3SLI1p817iByM6ItH4LS8tZatDAIKmAQAXj8d3Ups1BgVJECDrA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-object-super@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" - integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== +"@babel/plugin-transform-object-super@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.0.tgz#aa35d295dd62b84bbea2e155e0b3a2017eb2f4e8" + integrity sha512-2DYqQ811nRlFVlni6iqfxBVVGqkBgfvEv/lcvmdNu2CaG+EA7zSP1hqYUsqamR+uCdDbsrV7uY6/0rkXbJo5YQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-replace-supers" "^7.8.0" -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@babel/plugin-transform-parameters@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.0.tgz#edc1531beed51fb8a49e0a3f11ca6b508d083d6f" + integrity sha512-9R2yykk7H92rntETO0fq52vJ4OFaTcDA49K9s8bQPyoD4o3/SkWEklukArCsQC6fowEuraPkH/umopr9uO539g== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-call-delegate" "^7.8.0" + "@babel/helper-get-function-arity" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@babel/plugin-transform-property-literals@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.0.tgz#af7538d916935ece100e72123fce109182c01ac3" + integrity sha512-vjZaQlojnZIahu5ofEW+hPJfDI5A6r2Sbi5C0RuCaAOFj7viDIR5kOR7ul3Fz5US8V1sVk5Zd2yuPaz7iBeysg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" - integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== +"@babel/plugin-transform-react-display-name@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.0.tgz#4aa02b070a83bb12033f483bf65ab2444ba1832a" + integrity sha512-oozdOhU2hZ6Tb9LS9BceGqDSmiUrlZX8lmRqnxQuiGzqWlhflIRQ1oFBHdV+hv+Zi9e5BhRkfSYtMLRLEkuOVA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" - integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== +"@babel/plugin-transform-react-jsx-self@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.0.tgz#bd067b0ca21cf33eac80b7dfddf8699f1d13a943" + integrity sha512-hJXfJdLDDlJoxW/rAjkuIpGUUTizQ6fN9tIciW1M8KIqFsmpEf9psBPNTXYRCOLYLEsra+/WgVq+sc+1z05nQw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-jsx" "^7.8.0" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" - integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== +"@babel/plugin-transform-react-jsx-source@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.0.tgz#97681728c12d770449d1c3657621afe974645e59" + integrity sha512-W+0VXOhMRdUTL7brjKXND+BiXbsxczfMdZongQ/Jtti0JVMtcTxWo66NMxNNtbPYvbc4aUXmgjl3eMms41sYtg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-jsx" "^7.8.0" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" - integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== +"@babel/plugin-transform-react-jsx@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.0.tgz#5676f2a13befc16fa2a78bc557e02ff150c02a28" + integrity sha512-r5DgP2ZblaGmW/azRS9rlaf3oY4r/ByXRDA5Lcr3iHUkx3cCfL9RM10gU7AQmzwKymoq8LZ55sHyq9VeQFHwyQ== dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-builder-react-jsx" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-jsx" "^7.8.0" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@babel/plugin-transform-regenerator@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.0.tgz#4a0a40af2f7d60a54a3fd7ce58f06b12ab14eaf9" + integrity sha512-n88GT8PZuOHWxqxCJORW3g1QaYzQhHu5sEslxYeQkHVoewfnfuWN37t7YGaRLaNUdaZUlRPXhDcLGT7zBa/u0g== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" - integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-unicode-regex@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" - integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" - -"@babel/preset-env@^7.6.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.3.tgz#9e1bf05a2e2d687036d24c40e4639dc46cef2271" - integrity sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.6.2" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.3" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.6.2" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.6.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.3" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.6.2" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.6.2" - "@babel/types" "^7.6.3" - browserslist "^4.6.0" - core-js-compat "^3.1.1" +"@babel/plugin-transform-reserved-words@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.0.tgz#572f21e11b9271e67cc5695890b8d5e58186f51e" + integrity sha512-DnshRyDTXZhmAgO2c1QKZI4CfZjoP2t3fSwRsnbCP9P/FSBpf9I7ovnAELswklw5OeY+/D/JIiaGLoUt2II3LA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-transform-shorthand-properties@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.0.tgz#38b43048e633878f82a3ef1353868c12015ac838" + integrity sha512-sExhzq63Gl2PMbl7ETpN7Z1A38rLD6GeCT6EEEIIKjTVt9u6dRqJ6nHhaquL7QgR3egj/8fcvq23UvzfPqGAYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-transform-spread@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.0.tgz#939e17585b1f24535fdeafc5e11a439520f4b3ab" + integrity sha512-6Zjl0pv6x10YmFVRI0VhwJ/rE++geVHNJ9xwd+UIt3ON2VMRO7qI2lPsyLnzidR5HYNd/JXj47kdU9Rrn4YcnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-transform-sticky-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.0.tgz#98f634d133f7be471e1e6ccc613c6a95e7e9f1f5" + integrity sha512-uksok0Bqox8YeIRFhr6RRtlBXeGpN1ogiEVjEd7A7rVLPZBXKGbL7kODpE7MQ+avjDLv5EEKtDCeYuWZK7FF7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-regex" "^7.8.0" + +"@babel/plugin-transform-template-literals@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.0.tgz#2e19e890cc5b0d58643ee6986840e928d707f7ef" + integrity sha512-EF7Q7LEgeMpogHcvmHMNXBWdLWG1tpA1ErXH3i8zTu3+UEKo6aBn+FldPAJ16UbbbOwSCUCiDP6oZxvVRPhwnQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-transform-typeof-symbol@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.0.tgz#a8d0dd317349d3dcbb9d659808099c94486554a5" + integrity sha512-rEUBEFzsA9mCS2r7EtXFlM/6GqtzgLdC4WVYM9fIgJX+HcSJ8oMmj8LinfKhbo0ipRauvUM2teE2iNDNqDwO1g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-transform-unicode-regex@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.0.tgz#20988246a9d98271f861be422e5a17898b80e5b0" + integrity sha512-qDg8wsnE47B/Sj8ZtOndPHrGBxJMssZJ71SzXrItum9n++iVFN7kYuJO+OHhjom7+/or0zzYqvJNzCkUjyNKqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/preset-env@^7.8.2": + version "7.8.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.2.tgz#dd55bd61f5d0bb1237915173c0e94aa350de3089" + integrity sha512-AF2YUl2bGsLWTtFL68upTTB7nDo05aEcKjHmXJE+aXRvsx5K+9yRsHQP3MjnTrLOWe/eFyUr93dfILROsKC4eg== + dependencies: + "@babel/compat-data" "^7.8.0" + "@babel/helper-compilation-targets" "^7.8.0" + "@babel/helper-module-imports" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-proposal-async-generator-functions" "^7.8.0" + "@babel/plugin-proposal-dynamic-import" "^7.8.0" + "@babel/plugin-proposal-json-strings" "^7.8.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-proposal-object-rest-spread" "^7.8.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.0" + "@babel/plugin-proposal-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.0" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.0" + "@babel/plugin-transform-arrow-functions" "^7.8.0" + "@babel/plugin-transform-async-to-generator" "^7.8.0" + "@babel/plugin-transform-block-scoped-functions" "^7.8.0" + "@babel/plugin-transform-block-scoping" "^7.8.0" + "@babel/plugin-transform-classes" "^7.8.0" + "@babel/plugin-transform-computed-properties" "^7.8.0" + "@babel/plugin-transform-destructuring" "^7.8.0" + "@babel/plugin-transform-dotall-regex" "^7.8.0" + "@babel/plugin-transform-duplicate-keys" "^7.8.0" + "@babel/plugin-transform-exponentiation-operator" "^7.8.0" + "@babel/plugin-transform-for-of" "^7.8.0" + "@babel/plugin-transform-function-name" "^7.8.0" + "@babel/plugin-transform-literals" "^7.8.0" + "@babel/plugin-transform-member-expression-literals" "^7.8.0" + "@babel/plugin-transform-modules-amd" "^7.8.0" + "@babel/plugin-transform-modules-commonjs" "^7.8.0" + "@babel/plugin-transform-modules-systemjs" "^7.8.0" + "@babel/plugin-transform-modules-umd" "^7.8.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.0" + "@babel/plugin-transform-new-target" "^7.8.0" + "@babel/plugin-transform-object-super" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.8.0" + "@babel/plugin-transform-property-literals" "^7.8.0" + "@babel/plugin-transform-regenerator" "^7.8.0" + "@babel/plugin-transform-reserved-words" "^7.8.0" + "@babel/plugin-transform-shorthand-properties" "^7.8.0" + "@babel/plugin-transform-spread" "^7.8.0" + "@babel/plugin-transform-sticky-regex" "^7.8.0" + "@babel/plugin-transform-template-literals" "^7.8.0" + "@babel/plugin-transform-typeof-symbol" "^7.8.0" + "@babel/plugin-transform-unicode-regex" "^7.8.0" + "@babel/types" "^7.8.0" + browserslist "^4.8.2" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.0" semver "^5.5.0" -"@babel/preset-flow@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" - integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - -"@babel/preset-react@^7.0.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.6.3.tgz#d5242c828322520205ae4eda5d4f4f618964e2f6" - integrity sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" - integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" - integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.3" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.3" - "@babel/types" "^7.6.3" +"@babel/preset-flow@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.8.0.tgz#c4df512f5b7e20ae56cba33e1ac6dc8980d5b923" + integrity sha512-z10t7ggJjoqdvcOrnXA16PeDhykL+FeJHg8nYg3D+QuKyMyI433o8oNJO+jFrfLa1aQ9ps2eG2QA5I7FWlJlOA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-transform-flow-strip-types" "^7.8.0" + +"@babel/preset-react@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.0.tgz#fe3bdecfc94e9b4eb3aa2751cfb284e739e810be" + integrity sha512-GP9t18RjtH67ea3DA2k71VqtMnTOupYJx34Z+KUEBRoRxvdETaucmtMWH5uoGHWzAD4qxbuV5ckxpewm39NXkA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-transform-react-display-name" "^7.8.0" + "@babel/plugin-transform-react-jsx" "^7.8.0" + "@babel/plugin-transform-react-jsx-self" "^7.8.0" + "@babel/plugin-transform-react-jsx-source" "^7.8.0" + +"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.6.0", "@babel/template@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.0.tgz#a32f57ad3be89c0fa69ae87b53b4826844dc6330" + integrity sha512-0NNMDsY2t3ltAVVK1WHNiaePo3tXPUeJpCX4I3xSKFoEl852wJHG8mrgHVADf8Lz1y+8al9cF7cSSfzSnFSYiw== + dependencies: + "@babel/code-frame" "^7.8.0" + "@babel/parser" "^7.8.0" + "@babel/types" "^7.8.0" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3", "@babel/traverse@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.0.tgz#d85266fdcff553c10e57b672604b36383a127c1f" + integrity sha512-d/6sPXFLGlJHZO/zWDtgFaKyalCOHLedzxpVJn6el1cw+f2TZa7xZEszeXdOw6EUemqRFBAn106BWBvtSck9Qw== + dependencies: + "@babel/code-frame" "^7.8.0" + "@babel/generator" "^7.8.0" + "@babel/helper-function-name" "^7.8.0" + "@babel/helper-split-export-declaration" "^7.8.0" + "@babel/parser" "^7.8.0" + "@babel/types" "^7.8.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0", "@babel/types@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" - integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0", "@babel/types@^7.6.3", "@babel/types@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.0.tgz#1a2039a028057a2c888b668d94c98e61ea906e7f" + integrity sha512-1RF84ehyx9HH09dMMwGWl3UTWlVoCPtqqJPjGuC4JzMe1ZIVDJ2DT8mv3cPv/A7veLD6sgR7vi95lJqm+ZayIg== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -1229,10 +1299,10 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" - integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn-walk@^6.0.1: version "6.2.0" @@ -1249,7 +1319,7 @@ acorn@^6.0.1, acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.0.0: +acorn@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== @@ -1287,11 +1357,18 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -1312,6 +1389,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1763,14 +1845,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.6.0, browserslist@^4.6.6: - version "4.7.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== +browserslist@^4.8.2, browserslist@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" + integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" + caniuse-lite "^1.0.30001017" + electron-to-chromium "^1.3.322" + node-releases "^1.1.44" bser@^2.0.0: version "2.1.0" @@ -1893,10 +1975,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000989: - version "1.0.30000999" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz#427253a69ad7bea4aa8d8345687b8eec51ca0e43" - integrity sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg== +caniuse-lite@^1.0.30001017: + version "1.0.30001020" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz#3f04c1737500ffda78be9beb0b5c1e2070e15926" + integrity sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA== capture-exit@^2.0.0: version "2.0.0" @@ -2006,6 +2088,13 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -2079,11 +2168,16 @@ commander@2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@^2.20.0, commander@^2.8.1: +commander@^2.20.0: version "2.20.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== +commander@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" + integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2163,10 +2257,10 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -2197,13 +2291,13 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" - integrity sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A== +core-js-compat@^3.6.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.3.tgz#41e281ca771209d5f2eb63ce34f96037d0928538" + integrity sha512-Y3YNGU3bU1yrnzVodop23ghArbKv4IqkZg9MMOWv/h7KT6NRk1/SzHhWDDlubg2+tlcUzAqgj1/GyeJ9fUKMeg== dependencies: - browserslist "^4.6.6" - semver "^6.3.0" + browserslist "^4.8.3" + semver "7.0.0" core-js@^2.0.0: version "2.6.9" @@ -2293,23 +2387,23 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-loader@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" - integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== +css-loader@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== dependencies: camelcase "^5.3.1" cssesc "^3.0.0" icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.17" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.0" + postcss-modules-scope "^2.1.1" postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.0" - schema-utils "^2.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" cssesc@^3.0.0: version "3.0.0" @@ -2624,15 +2718,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.1.tgz#5b5ab57f718b79d4aca9254457afecd36fa80228" - integrity sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ== +ejs@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.1.tgz#30c8f6ee9948502cc32e85c37a3f8b39b5a614a5" + integrity sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw== -electron-to-chromium@^1.3.247: - version "1.3.279" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.279.tgz#543d578f118afbb750ff1e8f3e0c898c30a4f574" - integrity sha512-iiBT/LeUWKnhd7d/n4IZsx/NIacs7gjFgAT1q5/i0POiS+5d0rVnbbyCRMmsBW7vaQJOUhWyh4PsyIVZb/Ax5Q== +electron-to-chromium@^1.3.322: + version "1.3.332" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.332.tgz#283df02d8269e25d9e2f424e11e909c9730a8a82" + integrity sha512-AP2HkLhfSOIxP7gDjlyZ4ywGWIcxRMZoU9+JriuVkQe2pSLDdWBsE6+eI6BQOqun1dohLrUTOPHsQLLhhFA7Eg== elegant-spinner@^1.0.1: version "1.0.1" @@ -2657,6 +2751,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2706,26 +2805,27 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57" - integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ== +es-abstract@^1.12.0, es-abstract@^1.17.0-next.1, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" + integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.2.0, es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -2753,34 +2853,40 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-plugin-flowtype@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.3.0.tgz#06d0837ac341caf369e7e6dbb112dd7fd21acf17" - integrity sha512-elvqoadMHnYqSYN1YXn02DR7SFW8Kc2CLe8na3m2GdQPQhIY+BgCd2quVJ1AbW3aO0zcyE9loVJ7Szy8A/xlMA== +eslint-plugin-eslint-plugin@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.2.0.tgz#6cac90a8085f658e892b155dda130deac54cfa51" + integrity sha512-X5+NT9a2GuwWyb3sHJdEEe6aD/30Fhi3/9XCmYHe/OSnWKUhmKOxFTfFM1AXZfJXjAoX7811bnoLI3fZr5AX5Q== + +eslint-plugin-flowtype@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== dependencies: lodash "^4.17.15" -eslint-plugin-mocha@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.0.tgz#16ff9ce4d5a6a35af522d5db0ce3c8946566e4c1" - integrity sha512-vE/+tHJVom2BkMOiwkOKcAM5YqGPk3C6gMvQ32DHihKkaXF6vmxtj3UEOg64wP3m8/Zk5V/UmQbFE5nqu1EXSg== +eslint-plugin-mocha@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.2.tgz#6ef4b78bd12d744beb08a06e8209de330985100d" + integrity sha512-oNhPzfkT6Q6CJ0HMVJ2KLxEWG97VWGTmuHOoRcDLE0U88ugUyFNV9wrT2XIt5cGtqc5W9k38m4xTN34L09KhBA== dependencies: ramda "^0.26.1" -eslint-plugin-react@^7.14.3: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" - integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== +eslint-plugin-react@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz#a31b3e134b76046abe3cd278e7482bd35a1d12d7" + integrity sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" + eslint-plugin-eslint-plugin "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" + jsx-ast-utils "^2.2.3" object.entries "^1.1.0" - object.fromentries "^2.0.0" + object.fromentries "^2.0.1" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.12.0" + resolve "^1.13.1" eslint-scope@^4.0.3: version "4.0.3" @@ -2798,22 +2904,22 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.4.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.1.tgz#828e4c469697d43bb586144be152198b91e96ed6" - integrity sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -2822,19 +2928,19 @@ eslint@^6.4.0: debug "^4.0.1" doctrine "^3.0.0" eslint-scope "^5.0.0" - eslint-utils "^1.4.2" + eslint-utils "^1.4.3" eslint-visitor-keys "^1.1.0" - espree "^6.1.1" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.4.1" + inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" @@ -2843,7 +2949,7 @@ eslint@^6.4.0: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -2863,13 +2969,13 @@ espower-location-detector@^1.0.0: source-map "^0.5.0" xtend "^4.0.0" -espree@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" + acorn "^7.1.0" + acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" esprima@^3.1.3: @@ -3131,7 +3237,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3184,6 +3290,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -3269,10 +3382,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flow-bin@^0.110.1: - version "0.110.1" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.110.1.tgz#24ac70bf0871a5d6bc181ba99801ded4d5e3b442" - integrity sha512-6FhvNKNvPQ523mx7sqNxTQvI/HgAWa/pbIsQuCst53qRqs387EFfYqgm4I3Zae5HLaVFacBwgWKmjKd92vf19w== +flow-bin@^0.115.0: + version "0.115.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.115.0.tgz#22e3ad9e5c7198967de80138ba8a9154ff387960" + integrity sha512-xW+U2SrBaAr0EeLvKmXAmsdnrH6x0Io17P6yRJTNgrrV42G8KXhBAD00s6oGbTTqRyHD0nP47kyuU34zljZpaQ== flush-write-stream@^1.0.0: version "1.1.1" @@ -3392,6 +3505,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -3509,11 +3627,18 @@ global@^4.3.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + globby@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" @@ -3590,10 +3715,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0: version "2.0.1" @@ -3922,22 +4047,22 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.4.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== +inquirer@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" + integrity sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -4027,10 +4152,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== is-ci@^2.0.0: version "2.0.0" @@ -4110,6 +4235,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -4177,11 +4307,6 @@ is-path-inside@^3.0.1: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4194,12 +4319,12 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-regexp@^1.0.0: version "1.0.0" @@ -4661,11 +4786,6 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4780,10 +4900,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== +jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" object.assign "^4.1.0" @@ -4839,6 +4959,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" + integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4852,10 +4979,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^9.2.5: - version "9.4.2" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.4.2.tgz#14cb577a9512f520691f8b5aefce6a8f7ead6c04" - integrity sha512-OFyGokJSWTn2M6vngnlLXjaHhi8n83VIZZ5/1Z26SULRUWgR3ITWpAEQC9Pnm3MC/EpCxlwts/mQWDHNji2+zA== +lint-staged@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" + integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA== dependencies: chalk "^2.4.2" commander "^2.20.0" @@ -4965,7 +5092,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.6.1: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.6.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -4993,10 +5120,10 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -loglevel@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" - integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +loglevel@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -5307,10 +5434,10 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: version "2.14.0" @@ -5434,10 +5561,10 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.29: - version "1.1.35" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.35.tgz#32a74a3cd497aa77f23d509f483475fd160e4c48" - integrity sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w== +node-releases@^1.1.44: + version "1.1.45" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" + integrity sha512-cXvGSfhITKI8qsV116u2FTzH5EWZJfgG7d4cpqwF8I8+1tWpD6AsvvGRKq2onR0DNj1jfqsjkXZsm14JMS7Cyg== dependencies: semver "^6.3.0" @@ -5537,10 +5664,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.6.0, object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: version "1.0.1" @@ -5579,13 +5706,13 @@ object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704" - integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA== +object.fromentries@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.15.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -5677,17 +5804,17 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" original@^1.0.0: version "1.0.2" @@ -5728,15 +5855,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" - integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== - dependencies: - graceful-fs "^4.1.11" - is-plain-obj "^1.1.0" - mkdirp "^0.5.1" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -6059,10 +6177,10 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== +postcss-modules-scope@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" + integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -6084,15 +6202,15 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-value-parser@^4.0.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== -postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" - integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== +postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -6103,10 +6221,10 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@^1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" - integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== +prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-format@^24.9.0: version "24.9.0" @@ -6305,15 +6423,15 @@ react-deep-force-update@^1.0.0: resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA== -react-dom@^16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.11.0.tgz#7e7c4a5a85a569d565c2462f5d345da2dd849af5" - integrity sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA== +react-dom@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.17.0" + scheduler "^0.18.0" react-draggable@^4.0.0, react-draggable@^4.0.3: version "4.0.3" @@ -6323,10 +6441,10 @@ react-draggable@^4.0.0, react-draggable@^4.0.3: classnames "^2.2.5" prop-types "^15.6.0" -react-hot-loader@^4.12.13: - version "4.12.15" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.15.tgz#6bf3984e52edbdf02ea8952777f53da1b3c68c95" - integrity sha512-sgkN6g+tgPE6xZzD0Ysqll7KUFYJbMX0DrczT5OxD6S7hZlSnmqSC3ceudwCkiDd65ZTtm+Ayk4Y9k5xxCvpOw== +react-hot-loader@^4.12.18: + version "4.12.18" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.18.tgz#a9029e34af2690d76208f9a35189d73c2dfea6a7" + integrity sha512-qYD0Qi9lIbg9jLyfmodfqvAQqCBsoPKxAhca8Nxvy2/2pO5Q9r2kM28jN0bbbSnhwK8dJ7FjsfVtXKOxMW+bqw== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -6371,10 +6489,10 @@ react-transform-hmr@^1.0.2: global "^4.3.0" react-proxy "^1.1.7" -react@^16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.11.0.tgz#d294545fe62299ccee83363599bf904e4a07fdbb" - integrity sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g== +react@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6620,10 +6738,10 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== dependencies: path-parse "^1.0.6" @@ -6635,6 +6753,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -6708,10 +6834,10 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.3.3, rxjs@^6.4.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" - integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== +rxjs@^6.3.3, rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" @@ -6757,10 +6883,10 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" - integrity sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA== +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6774,10 +6900,10 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.4.1.tgz#e89ade5d056dc8bcaca377574bb4a9c4e1b8be56" - integrity sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w== +schema-utils@^2.0.1, schema-utils@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" + integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== dependencies: ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -6804,6 +6930,11 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -6828,10 +6959,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== serve-index@^1.9.1: version "1.9.1" @@ -7221,7 +7352,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7238,18 +7369,27 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimleft@^2.1.0, string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== +string.prototype.trimright@^2.1.0, string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" @@ -7298,6 +7438,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -7323,10 +7470,10 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" - integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== +style-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.2.tgz#1b519c19faf548df6182b93e72ea1a4156022c2f" + integrity sha512-0Mpq1ZHFDCNq1F+6avNBgv+7q8V+mWRuzehxyJT+aKgzyN/yfKTwjYqaYwBgx+11UpQxL21zNQfzzlz+JcGURw== dependencies: loader-utils "^1.2.3" schema-utils "^2.0.1" @@ -7388,16 +7535,16 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" @@ -7573,6 +7720,11 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -7806,10 +7958,10 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-cli@^3.3.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.9.tgz#79c27e71f94b7fe324d594ab64a8e396b9daa91a" - integrity sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A== +webpack-cli@^3.3.10: + version "3.3.10" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" + integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -7834,10 +7986,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" - integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== +webpack-dev-server@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" + integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -7854,7 +8006,7 @@ webpack-dev-server@^3.9.0: ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" portfinder "^1.0.25" @@ -7889,10 +8041,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.41.2: - version "4.41.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" - integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== +webpack@^4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -7914,7 +8066,7 @@ webpack@^4.41.2: node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" + terser-webpack-plugin "^1.4.3" watchpack "^1.6.0" webpack-sources "^1.4.1" @@ -7988,6 +8140,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" From 52390bfa31a1137bfdf965ba1b17503a9fd2c300 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Mon, 13 Jan 2020 15:31:03 -0500 Subject: [PATCH 065/101] chore(prettier): run on a few files that got missed --- .babelrc.js | 20 +++++++++----------- lib/GridItem.jsx | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.babelrc.js b/.babelrc.js index 3e76b8cdd..fa0b96f75 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -1,25 +1,23 @@ -'use strict'; +"use strict"; module.exports = { - "presets": [ + presets: [ [ "@babel/preset-env", { - targets: "> 0.25%, not dead", + targets: "> 0.25%, not dead" } ], "@babel/react", "@babel/preset-flow" ], - "plugins": [ + plugins: [ "@babel/plugin-transform-flow-comments", - "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-class-properties" ], - "env": { - "test": { - "plugins": [ - "espower" - ] + env: { + test: { + plugins: ["espower"] } } -} +}; diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 9895669a8..636662185 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -468,8 +468,8 @@ export default class GridItem extends React.Component { */ onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => { if (!this.props.onDrag) return; - deltaX /= this.props.transformScale - deltaY /= this.props.transformScale + deltaX /= this.props.transformScale; + deltaY /= this.props.transformScale; const newPosition: PartialPosition = { top: 0, left: 0 }; From ba0c333a7b4aa9e59338812720d671d6a9a00d2c Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Mon, 13 Jan 2020 15:33:47 -0500 Subject: [PATCH 066/101] chore(pkg): remove babel-plugin-espower Not actually that useful in combination with Jest --- .babelrc.js | 7 +--- package.json | 1 - yarn.lock | 91 +++++++++++----------------------------------------- 3 files changed, 19 insertions(+), 80 deletions(-) diff --git a/.babelrc.js b/.babelrc.js index fa0b96f75..4d8f25494 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -14,10 +14,5 @@ module.exports = { plugins: [ "@babel/plugin-transform-flow-comments", "@babel/plugin-proposal-class-properties" - ], - env: { - test: { - plugins: ["espower"] - } - } + ] }; diff --git a/package.json b/package.json index 24d9f1ad4..9e61d0f82 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.0.6", - "babel-plugin-espower": "^3.0.1", "css-loader": "^3.4.2", "ejs": "^3.0.1", "eslint": "^6.8.0", diff --git a/yarn.lock b/yarn.lock index bbefea122..eb77f00f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,7 +18,7 @@ optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.0.tgz#8c98d4ac29d6f80f28127b1bc50970a72086c5ac" integrity sha512-AN2IR/wCUYsM+PdErq6Bp3RFTXl8W0p9Nmymm7zkpsCmh+r/YYcckaCGpU8Q/mEKmST19kkGRaG42A/jxOWwBA== @@ -55,7 +55,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4", "@babel/generator@^7.8.0": +"@babel/generator@^7.4.0", "@babel/generator@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.0.tgz#40a1244677be58ffdc5cd01e22634cd1d5b29edf" integrity sha512-2Lp2e02CV2C7j/H4n4D9YvsvdhPVVg9GDIamr6Tu4tU35mL3mzOrzl1lZ8ZJtysfZXh+y+AGORc2rPS7yHxBUg== @@ -145,7 +145,7 @@ "@babel/traverse" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/helper-function-name@^7.1.0", "@babel/helper-function-name@^7.8.0": +"@babel/helper-function-name@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.0.tgz#dde5cf0d6b15c21817a67dd66fe7350348e023bf" integrity sha512-x9psucuU0Xalw+0Vpr2FYJMLB7/KnPSLZhlkUyOGbYAWRDfmtZBrguYpJYiaNCRV7vGkYjO/gF6/J6yMvdWTDw== @@ -154,7 +154,7 @@ "@babel/template" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/helper-get-function-arity@^7.0.0", "@babel/helper-get-function-arity@^7.8.0": +"@babel/helper-get-function-arity@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.0.tgz#90977f61d76d2225d1ae0208def7df22ea92792e" integrity sha512-eUP5grliToMapQiTaYS2AAO/WwaCG7cuJztR1v/a1aPzUzUeGt+AaI9OvLATc/AfFkF8SLJ10d5ugGt/AQ9d6w== @@ -242,7 +242,7 @@ "@babel/template" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/helper-split-export-declaration@^7.4.4", "@babel/helper-split-export-declaration@^7.8.0": +"@babel/helper-split-export-declaration@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.0.tgz#ed10cb03b07454c0d40735fad4e9c9711e739588" integrity sha512-YhYFhH4T6DlbT6CPtVgLfC1Jp2gbCawU/ml7WJvUpBg01bCrXSzTYMZZXbbIGjq/kHmK8YUATxTppcRGzj31pA== @@ -259,7 +259,7 @@ "@babel/traverse" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/helpers@^7.6.2", "@babel/helpers@^7.8.0": +"@babel/helpers@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.0.tgz#3d3e6e08febf5edbbf63b1cf64395525aa3ece37" integrity sha512-srWKpjAFbiut5JoCReZJ098hLqoZ9HufOnKZPggc7j74XaPuQ+9b3RYPV1M/HfjL63lCNd8uI1O487qIWxAFNA== @@ -268,7 +268,7 @@ "@babel/traverse" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/highlight@^7.0.0", "@babel/highlight@^7.8.0": +"@babel/highlight@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.0.tgz#4cc003dc10359919e2e3a1d9459150942913dd1a" integrity sha512-OsdTJbHlPtIk2mmtwXItYrdmalJ8T0zpVzNAbKSkHshuywj7zb29Y09McV/jQsQunc/nEyHiPV2oy9llYMLqxw== @@ -277,7 +277,7 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4", "@babel/parser@^7.8.0": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.0.tgz#54682775f1fb25dd29a93a02315aab29a6a292bb" integrity sha512-VVtsnUYbd1+2A2vOVhm4P2qNXQE8L/W859GpUHfUcdhX8d3pEKThZuIr6fztocWx9HbK+00/CR0tXnhAggJ4CA== @@ -801,7 +801,7 @@ "@babel/plugin-transform-react-jsx-self" "^7.8.0" "@babel/plugin-transform-react-jsx-source" "^7.8.0" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.6.0", "@babel/template@^7.8.0": +"@babel/template@^7.4.0", "@babel/template@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.0.tgz#a32f57ad3be89c0fa69ae87b53b4826844dc6330" integrity sha512-0NNMDsY2t3ltAVVK1WHNiaePo3tXPUeJpCX4I3xSKFoEl852wJHG8mrgHVADf8Lz1y+8al9cF7cSSfzSnFSYiw== @@ -810,7 +810,7 @@ "@babel/parser" "^7.8.0" "@babel/types" "^7.8.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3", "@babel/traverse@^7.8.0": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.0.tgz#d85266fdcff553c10e57b672604b36383a127c1f" integrity sha512-d/6sPXFLGlJHZO/zWDtgFaKyalCOHLedzxpVJn6el1cw+f2TZa7xZEszeXdOw6EUemqRFBAn106BWBvtSck9Qw== @@ -825,7 +825,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0", "@babel/types@^7.6.3", "@babel/types@^7.8.0": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.0.tgz#1a2039a028057a2c888b668d94c98e61ea906e7f" integrity sha512-1RF84ehyx9HH09dMMwGWl3UTWlVoCPtqqJPjGuC4JzMe1ZIVDJ2DT8mv3cPv/A7veLD6sgR7vi95lJqm+ZayIg== @@ -1617,19 +1617,6 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" -babel-plugin-espower@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e" - integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - call-matcher "^1.0.0" - core-js "^2.0.0" - espower-location-detector "^1.0.0" - espurify "^1.6.0" - estraverse "^4.1.1" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -1936,16 +1923,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-matcher@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" - integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw== - dependencies: - core-js "^2.0.0" - deep-equal "^1.0.0" - espurify "^1.6.0" - estraverse "^4.0.0" - caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2299,11 +2276,6 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" -core-js@^2.0.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2489,7 +2461,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-equal@^1.0.0, deep-equal@^1.0.1: +deep-equal@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== @@ -2822,7 +2794,7 @@ es-abstract@^1.12.0, es-abstract@^1.17.0-next.1, es-abstract@^1.5.1, es-abstract string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-to-primitive@^1.2.0, es-to-primitive@^1.2.1: +es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== @@ -2959,16 +2931,6 @@ eslint@^6.8.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espower-location-detector@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" - integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU= - dependencies: - is-url "^1.2.1" - path-is-absolute "^1.0.0" - source-map "^0.5.0" - xtend "^4.0.0" - espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" @@ -2988,13 +2950,6 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -espurify@^1.6.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" - integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== - dependencies: - core-js "^2.0.0" - esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" @@ -3237,7 +3192,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3756,7 +3711,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -4353,11 +4308,6 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-url@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -5664,7 +5614,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.6.0, object-inspect@^1.7.0: +object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== @@ -7378,7 +7328,7 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.1.0, string.prototype.trimleft@^2.1.1: +string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== @@ -7386,7 +7336,7 @@ string.prototype.trimleft@^2.1.0, string.prototype.trimleft@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0, string.prototype.trimright@^2.1.1: +string.prototype.trimright@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== @@ -8150,11 +8100,6 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" From 8d5ca2c8088e7e183edd7521615c36768748de99 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Mon, 13 Jan 2020 15:35:16 -0500 Subject: [PATCH 067/101] chore(pkg): add test pre-commit & upgrade husky package.json --- package.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9e61d0f82..78d444bdd 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,7 @@ "dev": "make dev", "prepublishOnly": "make build", "validate": "npm ls", - "flow": "flow", - "precommit": "lint-staged && make lint" + "flow": "flow" }, "repository": { "type": "git", @@ -91,5 +90,10 @@ "prettier --write", "git add" ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged && make lint && make test" + } } } From 63a9dedca73e372697ad4218975dfa67a5fde78a Mon Sep 17 00:00:00 2001 From: Jan Dufek Date: Wed, 22 Jan 2020 14:39:33 +0100 Subject: [PATCH 068/101] Moved calculation methods from GridItem to own util file --- lib/GridItem.jsx | 170 ++++++++++++------------------------------ lib/calculateUtils.js | 142 +++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+), 124 deletions(-) create mode 100644 lib/calculateUtils.js diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 636662185..eb131437d 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -5,6 +5,7 @@ import PropTypes from "prop-types"; import { DraggableCore } from "react-draggable"; import { Resizable } from "react-resizable"; import { perc, setTopLeft, setTransform } from "./utils"; +import { calcPosition, calcXY, calcWH } from "./calculateUtils"; import classNames from "classnames"; import type { Element as ReactElement, Node as ReactNode } from "react"; @@ -16,6 +17,8 @@ import type { Position } from "./utils"; +import type { PositionParams } from "./calculateUtils"; + type PartialPosition = { top: number, left: number }; type GridItemCallback = ( i: string, @@ -216,121 +219,15 @@ export default class GridItem extends React.Component { } } - // Helper for generating column width - calcColWidth(): number { - const { margin, containerPadding, containerWidth, cols } = this.props; - return ( - (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols - ); - } - - /** - * Return position on the page given an x, y, w, h. - * left, top, width, height are all in pixels. - * @param {Number} x X coordinate in grid units. - * @param {Number} y Y coordinate in grid units. - * @param {Number} w W coordinate in grid units. - * @param {Number} h H coordinate in grid units. - * @return {Object} Object containing coords. - */ - calcPosition( - x: number, - y: number, - w: number, - h: number, - state: ?Object - ): Position { - const { margin, containerPadding, rowHeight } = this.props; - const colWidth = this.calcColWidth(); - const out = {}; - - // If resizing, use the exact width and height as returned from resizing callbacks. - if (state && state.resizing) { - out.width = Math.round(state.resizing.width); - out.height = Math.round(state.resizing.height); - } - // Otherwise, calculate from grid units. - else { - // 0 * Infinity === NaN, which causes problems with resize constraints; - // Fix this if it occurs. - // Note we do it here rather than later because Math.round(Infinity) causes deopt - out.width = - w === Infinity - ? w - : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]); - out.height = - h === Infinity - ? h - : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]); - } - - // If dragging, use the exact width and height as returned from dragging callbacks. - if (state && state.dragging) { - out.top = Math.round(state.dragging.top); - out.left = Math.round(state.dragging.left); - } - // Otherwise, calculate from grid units. - else { - out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]); - out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]); - } - - return out; - } - - /** - * Translate x and y coordinates from pixels to grid units. - * @param {Number} top Top position (relative to parent) in pixels. - * @param {Number} left Left position (relative to parent) in pixels. - * @return {Object} x and y in grid units. - */ - calcXY(top: number, left: number): { x: number, y: number } { - const { margin, cols, rowHeight, w, h, maxRows } = this.props; - const colWidth = this.calcColWidth(); - - // left = colWidth * x + margin * (x + 1) - // l = cx + m(x+1) - // l = cx + mx + m - // l - m = cx + mx - // l - m = x(c + m) - // (l - m) / (c + m) = x - // x = (left - margin) / (coldWidth + margin) - let x = Math.round((left - margin[0]) / (colWidth + margin[0])); - let y = Math.round((top - margin[1]) / (rowHeight + margin[1])); - - // Capping - x = Math.max(Math.min(x, cols - w), 0); - y = Math.max(Math.min(y, maxRows - h), 0); - - return { x, y }; - } - - /** - * Given a height and width in pixel values, calculate grid units. - * @param {Number} height Height in pixels. - * @param {Number} width Width in pixels. - * @return {Object} w, h as grid units. - */ - calcWH({ - height, - width - }: { - height: number, - width: number - }): { w: number, h: number } { - const { margin, maxRows, cols, rowHeight, x, y } = this.props; - const colWidth = this.calcColWidth(); - - // width = colWidth * w - (margin * (w - 1)) - // ... - // w = (width + margin) / (colWidth + margin) - let w = Math.round((width + margin[0]) / (colWidth + margin[0])); - let h = Math.round((height + margin[1]) / (rowHeight + margin[1])); - - // Capping - w = Math.max(Math.min(w, cols - x), 0); - h = Math.max(Math.min(h, maxRows - y), 0); - return { w, h }; + getPositionParams(): PositionParams { + return { + cols: this.props.cols, + containerPadding: this.props.containerPadding, + containerWidth: this.props.containerWidth, + margin: this.props.margin, + maxRows: this.props.maxRows, + rowHeight: this.props.rowHeight + }; } /** @@ -398,13 +295,14 @@ export default class GridItem extends React.Component { position: Position ): ReactElement { const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props; + const positionParams = this.getPositionParams(); // This is the max possible width - doesn't go to infinity because of the width of the window - const maxWidth = this.calcPosition(0, 0, cols - x, 0).width; + const maxWidth = calcPosition(positionParams, 0, 0, cols - x, 0).width; // Calculate min/max constraints using our min & maxes - const mins = this.calcPosition(0, 0, minW, minH); - const maxes = this.calcPosition(0, 0, maxW, maxH); + const mins = calcPosition(positionParams, 0, 0, minW, minH); + const maxes = calcPosition(positionParams, 0, 0, maxW, maxH); const minConstraints = [mins.width, mins.height]; const maxConstraints = [ Math.min(maxes.width, maxWidth), @@ -449,7 +347,13 @@ export default class GridItem extends React.Component { newPosition.top = cTop - pTop + offsetParent.scrollTop; this.setState({ dragging: newPosition }); - const { x, y } = this.calcXY(newPosition.top, newPosition.left); + const { x, y } = calcXY( + this.getPositionParams(), + newPosition.top, + newPosition.left, + this.props.w, + this.props.h + ); return ( this.props.onDragStart && @@ -479,7 +383,13 @@ export default class GridItem extends React.Component { newPosition.top = this.state.dragging.top + deltaY; this.setState({ dragging: newPosition }); - const { x, y } = this.calcXY(newPosition.top, newPosition.left); + const { x, y } = calcXY( + this.getPositionParams(), + newPosition.top, + newPosition.left, + this.props.w, + this.props.h + ); return ( this.props.onDrag && @@ -507,7 +417,13 @@ export default class GridItem extends React.Component { newPosition.top = this.state.dragging.top; this.setState({ dragging: null }); - const { x, y } = this.calcXY(newPosition.top, newPosition.left); + const { x, y } = calcXY( + this.getPositionParams(), + newPosition.top, + newPosition.left, + this.props.w, + this.props.h + ); return ( this.props.onDragStop && @@ -570,10 +486,16 @@ export default class GridItem extends React.Component { ) { const handler = this.props[handlerName]; if (!handler) return; - const { cols, x, i, maxW, minW, maxH, minH } = this.props; + const { cols, x, y, i, maxW, minW, maxH, minH } = this.props; // Get new XY - let { w, h } = this.calcWH(size); + let { w, h } = calcWH( + this.getPositionParams(), + size.width, + size.height, + x, + y + ); // Cap w at numCols w = Math.min(w, cols - x); @@ -601,7 +523,7 @@ export default class GridItem extends React.Component { useCSSTransforms } = this.props; - const pos = this.calcPosition(x, y, w, h, this.state); + const pos = calcPosition(this.getPositionParams(), x, y, w, h, this.state); const child = React.Children.only(this.props.children); // Create the child element. We clone the existing element but modify its className and style. diff --git a/lib/calculateUtils.js b/lib/calculateUtils.js new file mode 100644 index 000000000..dc1e77da8 --- /dev/null +++ b/lib/calculateUtils.js @@ -0,0 +1,142 @@ +// @flow +import type { Position } from "./utils"; + +export type PositionParams = { + margin: [number, number], + containerPadding: [number, number], + containerWidth: number, + cols: number, + rowHeight: number, + maxRows: number +}; + +// Helper for generating column width +function calcColWidth(positionParams: PositionParams): number { + const { margin, containerPadding, containerWidth, cols } = positionParams; + return ( + (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols + ); +} + +/** + * Return position on the page given an x, y, w, h. + * left, top, width, height are all in pixels. + * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations. + * @param {Number} x X coordinate in grid units. + * @param {Number} y Y coordinate in grid units. + * @param {Number} w W coordinate in grid units. + * @param {Number} h H coordinate in grid units. + * @return {Position} Object containing coords. + */ +export function calcPosition( + positionParams: PositionParams, + x: number, + y: number, + w: number, + h: number, + state: ?Object +): Position { + const { margin, containerPadding, rowHeight } = positionParams; + const colWidth = calcColWidth(positionParams); + const out = {}; + + // If resizing, use the exact width and height as returned from resizing callbacks. + if (state && state.resizing) { + out.width = Math.round(state.resizing.width); + out.height = Math.round(state.resizing.height); + } + // Otherwise, calculate from grid units. + else { + // 0 * Infinity === NaN, which causes problems with resize constraints; + // Fix this if it occurs. + // Note we do it here rather than later because Math.round(Infinity) causes deopt + out.width = + w === Infinity + ? w + : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]); + out.height = + h === Infinity + ? h + : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]); + } + + // If dragging, use the exact width and height as returned from dragging callbacks. + if (state && state.dragging) { + out.top = Math.round(state.dragging.top); + out.left = Math.round(state.dragging.left); + } + // Otherwise, calculate from grid units. + else { + out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]); + out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]); + } + + return out; +} + +/** + * Translate x and y coordinates from pixels to grid units. + * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations. + * @param {Number} top Top position (relative to parent) in pixels. + * @param {Number} left Left position (relative to parent) in pixels. + * @param {Number} w W coordinate in grid units. + * @param {Number} h H coordinate in grid units. + * @return {Object} x and y in grid units. + */ +export function calcXY( + positionParams: PositionParams, + top: number, + left: number, + w: number, + h: number +): { x: number, y: number } { + const { margin, cols, rowHeight, maxRows } = positionParams; + const colWidth = calcColWidth(positionParams); + + // left = colWidth * x + margin * (x + 1) + // l = cx + m(x+1) + // l = cx + mx + m + // l - m = cx + mx + // l - m = x(c + m) + // (l - m) / (c + m) = x + // x = (left - margin) / (coldWidth + margin) + let x = Math.round((left - margin[0]) / (colWidth + margin[0])); + let y = Math.round((top - margin[1]) / (rowHeight + margin[1])); + + // Capping + x = Math.max(Math.min(x, cols - w), 0); + y = Math.max(Math.min(y, maxRows - h), 0); + + return { x, y }; +} + +/** + * Given a height and width in pixel values, calculate grid units. + * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations. + * @param {Number} height Height in pixels. + * @param {Number} width Width in pixels. + * @param {Number} x X coordinate in grid units. + * @param {Number} y Y coordinate in grid units. + * @return {Object} w, h as grid units. + */ +export function calcWH( + positionParams: PositionParams, + width: number, + height: number, + x: number, + y: number +): { w: number, h: number } { + const { margin, maxRows, cols, rowHeight } = positionParams; + const colWidth = calcColWidth(positionParams); + + // width = colWidth * w - (margin * (w - 1)) + // ... + // w = (width + margin) / (colWidth + margin) + let w = Math.round((width + margin[0]) / (colWidth + margin[0])); + let h = Math.round((height + margin[1]) / (rowHeight + margin[1])); + + // Capping + w = Math.max(Math.min(w, cols - x), 0); + h = Math.max(Math.min(h, maxRows - y), 0); + return { w, h }; +} From 5c6c92282d9543b0e312e5f56860f7ad2249a3f4 Mon Sep 17 00:00:00 2001 From: Jan Dufek Date: Wed, 22 Jan 2020 14:44:51 +0100 Subject: [PATCH 069/101] Setting correct grid unit position for newly created dropping items. --- lib/ReactGridLayout.jsx | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 90c9c73de..88bc916c8 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -16,6 +16,9 @@ import { getAllCollisions, noop } from "./utils"; + +import { calcXY } from "./calculateUtils"; + import GridItem from "./GridItem"; import type { ChildrenArray as ReactChildrenArray, @@ -34,6 +37,8 @@ import type { LayoutItem } from "./utils"; +import type { PositionParams } from "./calculateUtils"; + type State = { activeDrag: ?LayoutItem, layout: Layout, @@ -726,12 +731,37 @@ export default class ReactGridLayout extends React.Component { return false; } - const { droppingItem } = this.props; + const { + droppingItem, + margin, + cols, + rowHeight, + maxRows, + width, + containerPadding + } = this.props; const { layout } = this.state; const { layerX, layerY } = e.nativeEvent; const droppingPosition = { x: layerX, y: layerY, e }; if (!this.state.droppingDOMNode) { + const positionParams: PositionParams = { + cols, + margin, + maxRows, + rowHeight, + containerWidth: width, + containerPadding: containerPadding || margin + }; + + const calculatedPosition = calcXY( + positionParams, + layerY, + layerX, + droppingItem.w, + droppingItem.h + ); + this.setState({ droppingDOMNode:
    , droppingPosition, @@ -739,8 +769,8 @@ export default class ReactGridLayout extends React.Component { ...layout, { ...droppingItem, - x: 0, - y: 0, + x: calculatedPosition.x, + y: calculatedPosition.y, static: false, isDraggable: true } From be1d41f70b9328e15ebe51b49fbf3b9f806fdd48 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 22 Jan 2020 11:49:04 -0500 Subject: [PATCH 070/101] refactor(dropping): minor tweaks Rename DroppingPosition properties to "left,top" to reflect other places where "x,y" denote grid units and "left,top" denote px Minor fixes for example 15 --- lib/GridItem.jsx | 36 ++++++++++++++------------ lib/ReactGridLayout.jsx | 15 +++++++---- lib/utils.js | 2 +- test/examples/15-drag-from-outside.jsx | 2 +- test/test-hook.jsx | 4 ++- 5 files changed, 34 insertions(+), 25 deletions(-) diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index eb131437d..d300cd5ba 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -154,8 +154,8 @@ export default class GridItem extends React.Component { // Current position of a dropping element droppingPosition: PropTypes.shape({ e: PropTypes.object.isRequired, - x: PropTypes.number.isRequired, - y: PropTypes.number.isRequired + left: PropTypes.number.isRequired, + top: PropTypes.number.isRequired }) }; @@ -179,16 +179,17 @@ export default class GridItem extends React.Component { currentNode: HTMLElement; componentDidUpdate(prevProps: Props) { - if (this.props.droppingPosition && prevProps.droppingPosition) { - this.moveDroppingItem(prevProps); - } + this.moveDroppingItem(prevProps); } + // When a droppingPosition is present, this means we should fire a move event, as if we had moved + // this element by `x, y` pixels. moveDroppingItem(prevProps: Props) { const { droppingPosition } = this.props; + const prevDroppingPosition = prevProps.droppingPosition; const { dragging } = this.state; - if (!droppingPosition || !prevProps.droppingPosition) { + if (!droppingPosition || !prevDroppingPosition) { return; } @@ -198,18 +199,18 @@ export default class GridItem extends React.Component { } const shouldDrag = - (dragging && droppingPosition.x !== prevProps.droppingPosition.x) || - droppingPosition.y !== prevProps.droppingPosition.y; + (dragging && droppingPosition.left !== prevDroppingPosition.left) || + droppingPosition.top !== prevDroppingPosition.top; if (!dragging) { this.onDragStart(droppingPosition.e, { node: this.currentNode, - deltaX: droppingPosition.x, - deltaY: droppingPosition.y + deltaX: droppingPosition.left, + deltaY: droppingPosition.top }); } else if (shouldDrag) { - const deltaX = droppingPosition.x - dragging.left; - const deltaY = droppingPosition.y - dragging.top; + const deltaX = droppingPosition.left - dragging.left; + const deltaY = droppingPosition.top - dragging.top; this.onDrag(droppingPosition.e, { node: this.currentNode, @@ -371,9 +372,10 @@ export default class GridItem extends React.Component { * @param {Object} callbackData an object with node, delta and position information */ onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => { - if (!this.props.onDrag) return; - deltaX /= this.props.transformScale; - deltaY /= this.props.transformScale; + const { onDrag, transformScale } = this.props; + if (!onDrag) return; + deltaX /= transformScale; + deltaY /= transformScale; const newPosition: PartialPosition = { top: 0, left: 0 }; @@ -392,8 +394,8 @@ export default class GridItem extends React.Component { ); return ( - this.props.onDrag && - this.props.onDrag.call(this, this.props.i, x, y, { + onDrag && + onDrag.call(this, this.props.i, x, y, { e, node, newPosition diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 88bc916c8..24d21bcb5 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -721,9 +721,12 @@ export default class ReactGridLayout extends React.Component { ); } + // Called while dragging an element. Part of browser native drag/drop API. + // Native event target might be the layout itself, or an element within the layout. onDragOver = (e: DragOverEvent) => { // we should ignore events from layout's children in Firefox // to avoid unpredictable jumping of a dropping placeholder + // FIXME remove this hack if ( isFirefox && e.nativeEvent.target.className.indexOf(layoutClassName) === -1 @@ -741,8 +744,9 @@ export default class ReactGridLayout extends React.Component { containerPadding } = this.props; const { layout } = this.state; + // This is relative to the DOM element that this event fired for. const { layerX, layerY } = e.nativeEvent; - const droppingPosition = { x: layerX, y: layerY, e }; + const droppingPosition = { left: layerX, top: layerY, e }; if (!this.state.droppingDOMNode) { const positionParams: PositionParams = { @@ -777,10 +781,11 @@ export default class ReactGridLayout extends React.Component { ] }); } else if (this.state.droppingPosition) { - const shouldUpdatePosition = - this.state.droppingPosition.x != layerX || - this.state.droppingPosition.y != layerY; - shouldUpdatePosition && this.setState({ droppingPosition }); + const { left, top } = this.state.droppingPosition; + const shouldUpdatePosition = left != layerX || top != layerY; + if (shouldUpdatePosition) { + this.setState({ droppingPosition }); + } } e.stopPropagation(); diff --git a/lib/utils.js b/lib/utils.js index 151d48568..f60d3b834 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -38,7 +38,7 @@ export type ReactDraggableCallbackData = { }; export type PartialPosition = { left: number, top: number }; -export type DroppingPosition = { x: number, y: number, e: Event }; +export type DroppingPosition = { left: number, top: number, e: Event }; export type Size = { width: number, height: number }; export type GridDragEvent = { e: Event, diff --git a/test/examples/15-drag-from-outside.jsx b/test/examples/15-drag-from-outside.jsx index b249be1f5..cd661b6e9 100644 --- a/test/examples/15-drag-from-outside.jsx +++ b/test/examples/15-drag-from-outside.jsx @@ -70,7 +70,7 @@ export default class DragFromOutsideLayout extends React.Component { }; onDrop = elemParams => { - alert(`Element parameters: ${JSON.stringify(elemParams)}`); + alert(`Element parameters:\n${JSON.stringify(elemParams, ['x', 'y', 'w', 'h'], 2)}`); }; render() { diff --git a/test/test-hook.jsx b/test/test-hook.jsx index d8dacfae8..c7bbe3057 100644 --- a/test/test-hook.jsx +++ b/test/test-hook.jsx @@ -14,9 +14,11 @@ export default function makeLayout(Layout) { stringifyLayout() { return this.state.layout.map(function(l) { + const name = l.i === "__dropping-elem__" ? "drop" : l.i; return (
    - {l.i}: [{l.x}, {l.y}, {l.w}, {l.h}] + {name} + {`: [${l.x}, ${l.y}, ${l.w}, ${l.h}]`}
    ); }); From 72bd2108984f311a862d880aaec19ed9937f9f07 Mon Sep 17 00:00:00 2001 From: Eric Burel Date: Sun, 16 Feb 2020 19:27:11 +0100 Subject: [PATCH 071/101] Add link to users recipes wiki --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d1c302853..98b870583 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ RGL is React-only and does not require jQuery. - [Grid Layout Props](#grid-layout-props) - [Responsive Grid Layout Props](#responsive-grid-layout-props) - [Grid Item Props](#grid-item-props) +- [Users recipes](/STRML/react-grid-layout/wiki/Users-recipes) - [Contribute](#contribute) - [TODO List](#todo-list) From 3a7c20a9dc034a1b4f4472d9dbc5528174f2b38c Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 17 Feb 2020 00:09:06 +0200 Subject: [PATCH 072/101] Fixed the "User recipes" wiki link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 98b870583..9f2a9e8e9 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ RGL is React-only and does not require jQuery. - [Grid Layout Props](#grid-layout-props) - [Responsive Grid Layout Props](#responsive-grid-layout-props) - [Grid Item Props](#grid-item-props) -- [Users recipes](/STRML/react-grid-layout/wiki/Users-recipes) +- [Users recipes](../../wiki/Users-recipes) - [Contribute](#contribute) - [TODO List](#todo-list) From 1078b14582f424838947c8b0cf386eb6b45163b6 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 08:15:43 -0500 Subject: [PATCH 073/101] Add `shouldComponentUpdate` to major components. (#1123) * Fix freezing on drag ie11 https://github.com/STRML/react-grid-layout/issues/760 1) Add shouldComponentUpdate for ReactGridLayout 2) Add shouldComponentUpdate for GridItem 3) Fix when items are dragging not from own position, but from zero top left * feat(render): Add shouldComponentUpdate to ReactGridLayout & GridItem. This improves performance quite a bit in most cases, is implemented safely to avoid breakage on equal arrays and objects. To do so, while avoiding the maintenance burden of keeping a keylist in sync with propTypes, we read propTypes using babel-plugin-preval then construct a function to do the fastest possible comparison. This is *a lot* faster than isEqual while avoiding unnecessary comparison of e.g. `children`. * fix(test): complete refactor of calculateUtils Co-authored-by: Alexander Zayka <48759604+zaykaalexander@users.noreply.github.com> --- .babelrc.js | 3 +- lib/GridItem.jsx | 59 ++- lib/ReactGridLayout.jsx | 195 +--------- lib/ReactGridLayoutPropTypes.js | 179 +++++++++ lib/ResponsiveReactGridLayout.jsx | 2 +- lib/calculateUtils.js | 10 +- lib/fastRGLPropsEqual.js | 46 +++ lib/utils.js | 29 ++ package.json | 2 + test/spec/utils-test.js | 130 ++++++- yarn.lock | 612 ++++++++++++++++-------------- 11 files changed, 782 insertions(+), 485 deletions(-) create mode 100644 lib/ReactGridLayoutPropTypes.js create mode 100644 lib/fastRGLPropsEqual.js diff --git a/.babelrc.js b/.babelrc.js index 4d8f25494..dd572d391 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -13,6 +13,7 @@ module.exports = { ], plugins: [ "@babel/plugin-transform-flow-comments", - "@babel/plugin-proposal-class-properties" + "@babel/plugin-proposal-class-properties", + "babel-plugin-preval" ] }; diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index daf3a8959..932b4c60b 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -4,8 +4,8 @@ import ReactDOM from "react-dom"; import PropTypes from "prop-types"; import { DraggableCore } from "react-draggable"; import { Resizable } from "react-resizable"; -import { perc, setTopLeft, setTransform } from "./utils"; -import { calcPosition, calcXY, calcWH } from "./calculateUtils"; +import { fastPositionEqual, perc, setTopLeft, setTransform } from "./utils"; +import { calcGridItemPosition, calcXY, calcWH } from "./calculateUtils"; import classNames from "classnames"; import type { Element as ReactElement, Node as ReactNode } from "react"; @@ -178,6 +178,31 @@ export default class GridItem extends React.Component { currentNode: HTMLElement; + shouldComponentUpdate(nextProps: Props, nextState: State) { + let { x, y, w, h } = this.props; + const oldPosition = calcGridItemPosition( + this.getPositionParams(this.props), + x, + y, + w, + h, + this.state + ); + ({ x, y, w, h } = nextProps); + const newPosition = calcGridItemPosition( + this.getPositionParams(nextProps), + x, + y, + w, + h, + nextState + ); + return ( + !fastPositionEqual(oldPosition, newPosition) || + this.props.useCSSTransforms !== nextProps.useCSSTransforms + ); + } + componentDidUpdate(prevProps: Props) { this.moveDroppingItem(prevProps); } @@ -220,14 +245,14 @@ export default class GridItem extends React.Component { } } - getPositionParams(): PositionParams { + getPositionParams(props: Props = this.props): PositionParams { return { - cols: this.props.cols, - containerPadding: this.props.containerPadding, - containerWidth: this.props.containerWidth, - margin: this.props.margin, - maxRows: this.props.maxRows, - rowHeight: this.props.rowHeight + cols: props.cols, + containerPadding: props.containerPadding, + containerWidth: props.containerWidth, + margin: props.margin, + maxRows: props.maxRows, + rowHeight: props.rowHeight }; } @@ -304,11 +329,12 @@ export default class GridItem extends React.Component { const positionParams = this.getPositionParams(); // This is the max possible width - doesn't go to infinity because of the width of the window - const maxWidth = calcPosition(positionParams, 0, 0, cols - x, 0).width; + const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0) + .width; // Calculate min/max constraints using our min & maxes - const mins = calcPosition(positionParams, 0, 0, minW, minH); - const maxes = calcPosition(positionParams, 0, 0, maxW, maxH); + const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH); + const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH); const minConstraints = [mins.width, mins.height]; const maxConstraints = [ Math.min(maxes.width, maxWidth), @@ -534,7 +560,14 @@ export default class GridItem extends React.Component { useCSSTransforms } = this.props; - const pos = calcPosition(this.getPositionParams(), x, y, w, h, this.state); + const pos = calcGridItemPosition( + this.getPositionParams(), + x, + y, + w, + h, + this.state + ); const child = React.Children.only(this.props.children); // Create the child element. We clone the existing element but modify its className and style. diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index 24d21bcb5..e32f09e87 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -1,6 +1,6 @@ // @flow import React from "react"; -import PropTypes from "prop-types"; + import isEqual from "lodash.isequal"; import classNames from "classnames"; import { @@ -12,14 +12,16 @@ import { getLayoutItem, moveElement, synchronizeLayoutWithChildren, - validateLayout, getAllCollisions, - noop + compactType, + noop, + fastRGLPropsEqual } from "./utils"; import { calcXY } from "./calculateUtils"; import GridItem from "./GridItem"; +import ReactGridLayoutPropTypes from "./ReactGridLayoutPropTypes"; import type { ChildrenArray as ReactChildrenArray, Element as ReactElement @@ -27,7 +29,6 @@ import type { // Types import type { - EventCallback, CompactType, GridResizeEvent, GridDragEvent, @@ -54,53 +55,9 @@ type State = { propsLayout?: Layout }; -export type Props = { - className: string, - style: Object, - width: number, - autoSize: boolean, - cols: number, - draggableCancel: string, - draggableHandle: string, - verticalCompact: boolean, - compactType: CompactType, - layout: Layout, - margin: [number, number], - containerPadding: [number, number] | null, - rowHeight: number, - maxRows: number, - isDraggable: boolean, - isResizable: boolean, - isDroppable: boolean, - preventCollision: boolean, - useCSSTransforms: boolean, - transformScale: number, - droppingItem: $Shape, - - // Callbacks - onLayoutChange: Layout => void, - onDrag: EventCallback, - onDragStart: EventCallback, - onDragStop: EventCallback, - onResize: EventCallback, - onResizeStart: EventCallback, - onResizeStop: EventCallback, - onDrop: (itemPosition: { - x: number, - y: number, - w: number, - h: number, - e: Event - }) => void, - children: ReactChildrenArray> -}; -// End Types - -const compactType = (props: Props): CompactType => { - const { verticalCompact, compactType } = props || {}; +import type { Props } from "./ReactGridLayoutPropTypes"; - return verticalCompact === false ? null : compactType; -}; +// End Types const layoutClassName = "react-grid-layout"; let isFirefox = false; @@ -119,135 +76,8 @@ export default class ReactGridLayout extends React.Component { // TODO publish internal ReactClass displayName transform static displayName = "ReactGridLayout"; - static propTypes = { - // - // Basic props - // - className: PropTypes.string, - style: PropTypes.object, - - // This can be set explicitly. If it is not set, it will automatically - // be set to the container width. Note that resizes will *not* cause this to adjust. - // If you need that behavior, use WidthProvider. - width: PropTypes.number, - - // If true, the container height swells and contracts to fit contents - autoSize: PropTypes.bool, - // # of cols. - cols: PropTypes.number, - - // A selector that will not be draggable. - draggableCancel: PropTypes.string, - // A selector for the draggable handler - draggableHandle: PropTypes.string, - - // Deprecated - verticalCompact: function(props: Props) { - if ( - props.verticalCompact === false && - process.env.NODE_ENV !== "production" - ) { - console.warn( - // eslint-disable-line no-console - "`verticalCompact` on is deprecated and will be removed soon. " + - 'Use `compactType`: "horizontal" | "vertical" | null.' - ); - } - }, - // Choose vertical or hotizontal compaction - compactType: PropTypes.oneOf(["vertical", "horizontal"]), - - // layout is an array of object with the format: - // {x: Number, y: Number, w: Number, h: Number, i: String} - layout: function(props: Props) { - var layout = props.layout; - // I hope you're setting the data-grid property on the grid items - if (layout === undefined) return; - validateLayout(layout, "layout"); - }, - - // - // Grid Dimensions - // - - // Margin between items [x, y] in px - margin: PropTypes.arrayOf(PropTypes.number), - // Padding inside the container [x, y] in px - containerPadding: PropTypes.arrayOf(PropTypes.number), - // Rows have a static height, but you can change this based on breakpoints if you like - rowHeight: PropTypes.number, - // Default Infinity, but you can specify a max here if you like. - // Note that this isn't fully fleshed out and won't error if you specify a layout that - // extends beyond the row capacity. It will, however, not allow users to drag/resize - // an item past the barrier. They can push items beyond the barrier, though. - // Intentionally not documented for this reason. - maxRows: PropTypes.number, - - // - // Flags - // - isDraggable: PropTypes.bool, - isResizable: PropTypes.bool, - // If true, grid items won't change position when being dragged over. - preventCollision: PropTypes.bool, - // Use CSS transforms instead of top/left - useCSSTransforms: PropTypes.bool, - // parent layout transform scale - transformScale: PropTypes.number, - // If true, an external element can trigger onDrop callback with a specific grid position as a parameter - isDroppable: PropTypes.bool, - - // - // Callbacks - // - - // Callback so you can save the layout. Calls after each drag & resize stops. - onLayoutChange: PropTypes.func, - - // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node). - // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'. - onDragStart: PropTypes.func, - // Calls on each drag movement. - onDrag: PropTypes.func, - // Calls when drag is complete. - onDragStop: PropTypes.func, - //Calls when resize starts. - onResizeStart: PropTypes.func, - // Calls when resize movement happens. - onResize: PropTypes.func, - // Calls when resize is complete. - onResizeStop: PropTypes.func, - // Calls when some element is dropped. - onDrop: PropTypes.func, - - // - // Other validations - // - - droppingItem: PropTypes.shape({ - i: PropTypes.string.isRequired, - w: PropTypes.number.isRequired, - h: PropTypes.number.isRequired - }), - - // Children must not have duplicate keys. - children: function(props: Props, propName: string) { - var children = props[propName]; - - // Check children keys for duplicates. Throw if found. - var keys = {}; - React.Children.forEach(children, function(child) { - if (keys[child.key]) { - throw new Error( - 'Duplicate child key "' + - child.key + - '" found! This will cause problems in ReactGridLayout.' - ); - } - keys[child.key] = true; - }); - } - }; + // Refactored to another module to make way for preval + static propTypes = ReactGridLayoutPropTypes; static defaultProps = { autoSize: true, @@ -365,6 +195,13 @@ export default class ReactGridLayout extends React.Component { return null; } + shouldComponentUpdate(nextProps: Props, nextState: State) { + return ( + !fastRGLPropsEqual(this.props, nextProps, isEqual) || + !isEqual(this.state.activeDrag, nextState.activeDrag) + ); + } + componentDidUpdate(prevProps: Props, prevState: State) { if (!this.state.activeDrag) { const newLayout = this.state.layout; diff --git a/lib/ReactGridLayoutPropTypes.js b/lib/ReactGridLayoutPropTypes.js new file mode 100644 index 000000000..963feaa58 --- /dev/null +++ b/lib/ReactGridLayoutPropTypes.js @@ -0,0 +1,179 @@ +// @flow +import PropTypes from "prop-types"; +import React from "react"; +import type { + ChildrenArray as ReactChildrenArray, + Element as ReactElement +} from "react"; +import type { EventCallback, CompactType, Layout, LayoutItem } from "./utils"; + +export type Props = { + className: string, + style: Object, + width: number, + autoSize: boolean, + cols: number, + draggableCancel: string, + draggableHandle: string, + verticalCompact: boolean, + compactType: CompactType, + layout: Layout, + margin: [number, number], + containerPadding: [number, number] | null, + rowHeight: number, + maxRows: number, + isDraggable: boolean, + isResizable: boolean, + isDroppable: boolean, + preventCollision: boolean, + useCSSTransforms: boolean, + transformScale: number, + droppingItem: $Shape, + + // Callbacks + onLayoutChange: Layout => void, + onDrag: EventCallback, + onDragStart: EventCallback, + onDragStop: EventCallback, + onResize: EventCallback, + onResizeStart: EventCallback, + onResizeStop: EventCallback, + onDrop: (itemPosition: { + x: number, + y: number, + w: number, + h: number, + e: Event + }) => void, + children: ReactChildrenArray> +}; + +export default { + // + // Basic props + // + className: PropTypes.string, + style: PropTypes.object, + + // This can be set explicitly. If it is not set, it will automatically + // be set to the container width. Note that resizes will *not* cause this to adjust. + // If you need that behavior, use WidthProvider. + width: PropTypes.number, + + // If true, the container height swells and contracts to fit contents + autoSize: PropTypes.bool, + // # of cols. + cols: PropTypes.number, + + // A selector that will not be draggable. + draggableCancel: PropTypes.string, + // A selector for the draggable handler + draggableHandle: PropTypes.string, + + // Deprecated + verticalCompact: function(props: Props) { + if ( + props.verticalCompact === false && + process.env.NODE_ENV !== "production" + ) { + console.warn( + // eslint-disable-line no-console + "`verticalCompact` on is deprecated and will be removed soon. " + + 'Use `compactType`: "horizontal" | "vertical" | null.' + ); + } + }, + // Choose vertical or hotizontal compaction + compactType: PropTypes.oneOf(["vertical", "horizontal"]), + + // layout is an array of object with the format: + // {x: Number, y: Number, w: Number, h: Number, i: String} + layout: function(props: Props) { + var layout = props.layout; + // I hope you're setting the data-grid property on the grid items + if (layout === undefined) return; + require("./utils").validateLayout(layout, "layout"); + }, + + // + // Grid Dimensions + // + + // Margin between items [x, y] in px + margin: PropTypes.arrayOf(PropTypes.number), + // Padding inside the container [x, y] in px + containerPadding: PropTypes.arrayOf(PropTypes.number), + // Rows have a static height, but you can change this based on breakpoints if you like + rowHeight: PropTypes.number, + // Default Infinity, but you can specify a max here if you like. + // Note that this isn't fully fleshed out and won't error if you specify a layout that + // extends beyond the row capacity. It will, however, not allow users to drag/resize + // an item past the barrier. They can push items beyond the barrier, though. + // Intentionally not documented for this reason. + maxRows: PropTypes.number, + + // + // Flags + // + isDraggable: PropTypes.bool, + isResizable: PropTypes.bool, + // If true, grid items won't change position when being dragged over. + preventCollision: PropTypes.bool, + // Use CSS transforms instead of top/left + useCSSTransforms: PropTypes.bool, + // parent layout transform scale + transformScale: PropTypes.number, + // If true, an external element can trigger onDrop callback with a specific grid position as a parameter + isDroppable: PropTypes.bool, + + // + // Callbacks + // + + // Callback so you can save the layout. Calls after each drag & resize stops. + onLayoutChange: PropTypes.func, + + // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node). + // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'. + onDragStart: PropTypes.func, + // Calls on each drag movement. + onDrag: PropTypes.func, + // Calls when drag is complete. + onDragStop: PropTypes.func, + //Calls when resize starts. + onResizeStart: PropTypes.func, + // Calls when resize movement happens. + onResize: PropTypes.func, + // Calls when resize is complete. + onResizeStop: PropTypes.func, + // Calls when some element is dropped. + onDrop: PropTypes.func, + + // + // Other validations + // + + droppingItem: PropTypes.shape({ + i: PropTypes.string.isRequired, + w: PropTypes.number.isRequired, + h: PropTypes.number.isRequired + }), + + // Children must not have duplicate keys. + children: function(props: Props, propName: string) { + var children = props[propName]; + + // Check children keys for duplicates. Throw if found. + var keys = {}; + React.Children.forEach(children, function(child) { + if (keys[child.key]) { + throw new Error( + 'Duplicate child key "' + + child.key + + '" found! This will cause problems in ReactGridLayout.' + ); + } + keys[child.key] = true; + }); + } +}; diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 360a36837..6b462a9fb 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -15,7 +15,7 @@ import { findOrGenerateResponsiveLayout } from "./responsiveUtils"; import ReactGridLayout from "./ReactGridLayout"; -import type { Props as RGLProps } from "./ReactGridLayout"; +import type { Props as RGLProps } from "./ReactGridLayoutPropTypes"; import type { Layout } from "./utils"; const type = obj => Object.prototype.toString.call(obj); diff --git a/lib/calculateUtils.js b/lib/calculateUtils.js index dc1e77da8..1ef3a4609 100644 --- a/lib/calculateUtils.js +++ b/lib/calculateUtils.js @@ -11,7 +11,7 @@ export type PositionParams = { }; // Helper for generating column width -function calcColWidth(positionParams: PositionParams): number { +export function calcGridColWidth(positionParams: PositionParams): number { const { margin, containerPadding, containerWidth, cols } = positionParams; return ( (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols @@ -28,7 +28,7 @@ function calcColWidth(positionParams: PositionParams): number { * @param {Number} h H coordinate in grid units. * @return {Position} Object containing coords. */ -export function calcPosition( +export function calcGridItemPosition( positionParams: PositionParams, x: number, y: number, @@ -37,7 +37,7 @@ export function calcPosition( state: ?Object ): Position { const { margin, containerPadding, rowHeight } = positionParams; - const colWidth = calcColWidth(positionParams); + const colWidth = calcGridColWidth(positionParams); const out = {}; // If resizing, use the exact width and height as returned from resizing callbacks. @@ -91,7 +91,7 @@ export function calcXY( h: number ): { x: number, y: number } { const { margin, cols, rowHeight, maxRows } = positionParams; - const colWidth = calcColWidth(positionParams); + const colWidth = calcGridColWidth(positionParams); // left = colWidth * x + margin * (x + 1) // l = cx + m(x+1) @@ -127,7 +127,7 @@ export function calcWH( y: number ): { w: number, h: number } { const { margin, maxRows, cols, rowHeight } = positionParams; - const colWidth = calcColWidth(positionParams); + const colWidth = calcGridColWidth(positionParams); // width = colWidth * w - (margin * (w - 1)) // ... diff --git a/lib/fastRGLPropsEqual.js b/lib/fastRGLPropsEqual.js new file mode 100644 index 000000000..ae0f62064 --- /dev/null +++ b/lib/fastRGLPropsEqual.js @@ -0,0 +1,46 @@ +// @preval + +require("@babel/register"); + +// Fast way to compare RGL props in shouldComponentUpdate. +// Generates the fastest possible comparison of the type: +// function (a, b) { return a.className === b.className && a.style === b.style && ... } +// This avoids enumerating keys, avoids us keeping our own key list, and can be very easily optimized. + +const PropTypes = require("prop-types"); +const propTypes = require("./ReactGridLayoutPropTypes").default; +const keys = Object.keys(propTypes); + +// Remove 'children' key as we don't want to compare it +keys.splice(keys.indexOf("children"), 1); + +// Returns a code string indicating what to do here. +// In most cases we want to do a simple equality comparison, +// but we have some arrays and tuples and objects we want +// to do a shallow comparison on. +function getEqualType(key) { + if ( + [ + PropTypes.number, + PropTypes.bool, + PropTypes.string, + PropTypes.func + ].includes(propTypes[key]) + ) { + return `(a.${key} === b.${key})`; + } + return `isEqualImpl(a.${key}, b.${key})`; +} + +// Exports a function that compares a and b. `isEqualImpl` is a required +// third prop, as we can't otherwise access it. +module.exports = () => + eval(` + function fastRGLPropsEqual(a, b, isEqualImpl) { + if (a === b) return true; + return ( + ${keys.map(getEqualType).join(" && ")} + ); + } + fastRGLPropsEqual; +`); diff --git a/lib/utils.js b/lib/utils.js index f60d3b834..e60d51a67 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -128,6 +128,27 @@ export function childrenEqual(a: ReactChildren, b: ReactChildren): boolean { ); } +/** + * See `fastRGLPropsEqual.js`. + * We want this to run as fast as possible - it is called often - and to be + * resilient to new props that we add. So rather than call lodash.isEqual, + * which isn't suited to comparing props very well, we use this specialized + * function in conjunction with preval to generate the fastest possible comparison + * function, tuned for exactly our props. + */ +type FastRGLPropsEqual = (Object, Object, Function) => boolean; +export const fastRGLPropsEqual: FastRGLPropsEqual = require("./fastRGLPropsEqual"); + +// Like the above, but a lot simpler. +export function fastPositionEqual(a: Position, b: Position) { + return ( + a.left === b.left && + a.top === b.top && + a.width === b.width && + a.height === b.height + ); +} + /** * Given two layoutitems, check if they collide. */ @@ -684,6 +705,14 @@ export function validateLayout( } } +// Legacy support for verticalCompact: false +export function compactType( + props: ?{ verticalCompact: boolean, compactType: CompactType } +): CompactType { + const { verticalCompact, compactType } = props || {}; + return verticalCompact === false ? null : compactType; +} + // Flow can't really figure this out, so we just use Object export function autoBindHandlers(el: Object, fns: Array): void { fns.forEach(key => (el[key] = el[key].bind(el))); diff --git a/package.json b/package.json index 78d444bdd..09b08533d 100644 --- a/package.json +++ b/package.json @@ -49,9 +49,11 @@ "@babel/preset-env": "^7.8.2", "@babel/preset-flow": "^7.8.0", "@babel/preset-react": "^7.8.0", + "@babel/register": "^7.8.0", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.0.6", + "babel-plugin-preval": "^4.0.0", "css-loader": "^3.4.2", "ejs": "^3.0.1", "eslint": "^6.8.0", diff --git a/test/spec/utils-test.js b/test/spec/utils-test.js index 9e95530c5..ebba24047 100644 --- a/test/spec/utils-test.js +++ b/test/spec/utils-test.js @@ -4,11 +4,17 @@ import { bottom, collides, - validateLayout, - moveElement, compact, - sortLayoutItemsByRowCol + fastRGLPropsEqual, + moveElement, + sortLayoutItemsByRowCol, + validateLayout } from "../../lib/utils.js"; +import { + calcGridColWidth, + calcGridItemPosition +} from "../../lib/calculateUtils.js"; +import isEqual from "lodash.isequal"; /*:: import type { Layout } from "../../lib/utils.js"; */ /*:: declare function describe(name: string, fn: Function): void; */ @@ -415,3 +421,121 @@ describe("compact horizontal", () => { ]); }); }); + +const basePositionParams = { + margin: [0, 0], + containerPadding: [0, 0], + containerWidth: 800, + cols: 8, + rowHeight: 50, + maxRows: 12 +}; +describe("calcGridColWidth", () => { + it("should complete basic calculation", () => { + expect(calcGridColWidth(basePositionParams)).toEqual(100); + }); + + it("should consider margin", () => { + const positionParams = { + ...basePositionParams, + margin: [10, 10] + }; + // 70 px of margin in total (one between each of 8 items) + expect(calcGridColWidth(positionParams)).toEqual(91.25); + }); + + it("should consider container padding", () => { + const positionParams = { + ...basePositionParams, + containerPadding: [100, 0] + }; + // (800 - 100 - 100) / 8 + expect(calcGridColWidth(positionParams)).toEqual(75); + }); + + it("should consider margin and padding", () => { + const positionParams = { + ...basePositionParams, + margin: [10, 0], + containerPadding: [100, 0] + }; + // (800 - 100 - 100 - 70) / 8 + expect(calcGridColWidth(positionParams)).toEqual(66.25); + }); +}); + +describe("calcGridItemPosition", () => { + it("should complete basic calculation", () => { + const x = 1; + const y = 1; + const w = 2; + const h = 2; + const resizing = null; + const dragging = null; + const positionParams = { + ...basePositionParams, + margin: [10, 10], + containerPadding: [100, 100] + }; + expect( + calcGridItemPosition(positionParams, x, y, w, h, { resizing, dragging }) + ).toEqual({ + height: 110, // 50 * 2 + margin of 10 + left: 176, // 100 + colWidth (66.25) + margin. Rounded to complete pixel + top: 160, // 100 + height + margin + width: 143 // 2x colWidth + margin, rounded + }); + }); +}); + +describe("fastRGLPropsEqual", () => { + it("should tell us if props are equal, including arrays and objects", () => { + const props1 = { + className: "foo", + margin: [10, 10], + style: { background: "red" } + }; + const props2 = { + className: "foo", + margin: [10, 10], + style: { background: "red" } + }; + expect(fastRGLPropsEqual(props1, props2, isEqual)).toEqual(true); + }); + + it("catches changed arrays", () => { + const props1 = { + margin: [10, 10] + }; + const props2 = { + margin: [10, 11] + }; + expect(fastRGLPropsEqual(props1, props2, isEqual)).toEqual(false); + }); + + it("ignores children", () => { + const props1 = { + children: ["foo", "bar"] + }; + const props2 = { + children: ["biff", "bar"] + }; + expect(fastRGLPropsEqual(props1, props2, isEqual)).toEqual(true); + }); + + it("fails added props", () => { + const props1 = {}; + const props2 = { + droppingItem: { w: 1, h: 2, i: 3 } + }; + expect(fastRGLPropsEqual(props1, props2, isEqual)).toEqual(false); + }); + + it("ignores invalid props", () => { + const props1 = {}; + const props2 = { + somethingElse: { w: 1, h: 2, i: 3 } + }; + expect(fastRGLPropsEqual(props1, props2, isEqual)).toEqual(true); + }); +}); diff --git a/yarn.lock b/yarn.lock index eb77f00f1..ad33be1aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -801,6 +801,24 @@ "@babel/plugin-transform-react-jsx-self" "^7.8.0" "@babel/plugin-transform-react-jsx-source" "^7.8.0" +"@babel/register@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.0.tgz#a6515b7daab31209c584f2919702b1dcb6264105" + integrity sha512-i7CPQBzb/uALrZZozm6jXpSoieZvcTSOqonKA9UX4OLEvAYc4Y2VqgW67ZkSz6xfaNP6m1g1oBy0/zMA7YcdJA== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.0.tgz#8c81711517c56b3d00c6de706b0fb13dc3531549" + integrity sha512-Z7ti+HB0puCcLmFE3x90kzaVgbx6TRrYIReaygW6EkBEnJh1ajS4/inhF7CypzWeDV3NFl1AfWj0eMtdihojxw== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.4.0", "@babel/template@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.0.tgz#a32f57ad3be89c0fa69ae87b53b4826844dc6330" @@ -1030,9 +1048,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" - integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" @@ -1045,9 +1063,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" - integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== dependencies: "@babel/types" "^7.3.0" @@ -1091,15 +1109,20 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "12.7.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc" - integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ== + version "13.1.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.6.tgz#076028d0b0400be8105b89a0a55550c86684ffec" + integrity sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -1111,9 +1134,9 @@ integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== "@types/yargs@^13.0.0": - version "13.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" - integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== + version "13.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.5.tgz#18121bfd39dc12f280cee58f92c5b21d32041908" + integrity sha512-CF/+sxTO7FOwbIRL4wMv0ZYLCRfMid2HQpzDRyViH7kSpfoAFiMdGqKIxb1PxWfjtQXQhnQuD33lvRHNwr809Q== dependencies: "@types/yargs-parser" "*" @@ -1274,9 +1297,9 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" - integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== abbrev@1: version "1.1.1" @@ -1315,9 +1338,9 @@ acorn@^5.5.3: integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.1, acorn@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== acorn@^7.1.0: version "7.1.0" @@ -1470,12 +1493,13 @@ array-flatten@^2.1.0: integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-union@^1.0.1: version "1.0.2" @@ -1560,7 +1584,7 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== @@ -1571,9 +1595,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" + integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== babel-eslint@^10.0.3: version "10.0.3" @@ -1634,6 +1658,24 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-preval@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-4.0.0.tgz#edb8501167985752aafcc31086791e1314052e9d" + integrity sha512-fZI/4cYneinlj2k/FsXw0/lTWSC5KKoepUueS1g25Gb5vx3GrRyaVwxWCshYqx11GEU4mZnbbFhee8vpquFS2w== + dependencies: + "@babel/runtime" "^7.7.2" + babel-plugin-macros "^2.6.1" + require-from-string "^2.0.2" + babel-preset-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" @@ -1687,10 +1729,17 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bluebird@^3.5.5: - version "3.7.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf" - integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -1841,10 +1890,10 @@ browserslist@^4.8.2, browserslist@^4.8.3: electron-to-chromium "^1.3.322" node-releases "^1.1.44" -bser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" - integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg== +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" @@ -1864,9 +1913,9 @@ buffer-xor@^1.0.3: integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -2140,15 +2189,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - commander@^2.20.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" - integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.1: version "4.1.0" @@ -2166,11 +2210,11 @@ component-emitter@^1.2.1: integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" @@ -2206,11 +2250,9 @@ connect-history-api-fallback@^1.6.0: integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -2291,6 +2333,17 @@ cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2420,11 +2473,6 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2462,9 +2510,9 @@ dedent@^0.7.0: integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-equal@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" - integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" is-date-object "^1.0.1" @@ -2563,9 +2611,9 @@ depd@~1.1.2: integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -2706,9 +2754,9 @@ elegant-spinner@^1.0.1: integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@^6.0.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" - integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2777,7 +2825,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.17.0-next.1, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: version "1.17.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== @@ -2814,9 +2862,9 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -2985,9 +3033,9 @@ eventemitter3@^4.0.0: integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -3005,9 +3053,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^1.0.0: version "1.0.0" @@ -3177,9 +3225,9 @@ fast-deep-equal@^2.0.1: integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" - integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" + integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -3188,9 +3236,9 @@ fast-glob@^3.0.3: micromatch "^4.0.2" fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" @@ -3219,11 +3267,11 @@ faye-websocket@~0.11.1: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: - bser "^2.0.0" + bser "2.1.1" figgy-pudding@^3.5.1: version "3.5.1" @@ -3259,6 +3307,11 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3429,12 +3482,12 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" function-bind@^1.1.1: version "1.1.1" @@ -3476,9 +3529,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-own-enumerable-property-symbols@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz#6f7764f88ea11e0b514bd9bd860a132259992ca4" - integrity sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-stdin@^7.0.0: version "7.0.0" @@ -3527,9 +3580,9 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: is-glob "^4.0.1" glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3595,9 +3648,9 @@ globals@^12.1.0: type-fest "^0.8.1" globby@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== dependencies: "@types/glob" "^7.1.1" array-union "^2.1.0" @@ -3620,9 +3673,9 @@ globby@^6.1.0: pinkie-promise "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== growly@^1.3.0: version "1.3.0" @@ -3634,17 +3687,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.3.tgz#180bae52c1d0e9ec0c15d7e82a4362d662762f6e" - integrity sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3744,9 +3786,9 @@ hmac-drbg@^1.0.0: minimalistic-crypto-utils "^1.0.1" hoist-non-react-statics@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" - integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + version "3.3.1" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#101685d3aff3b23ea213163f6e8e12f4f111e19f" + integrity sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw== dependencies: react-is "^16.7.0" @@ -3784,6 +3826,11 @@ html-entities@^1.2.1: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -3860,9 +3907,9 @@ https-browserify@^1.0.0: integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= husky@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.9.tgz#a2c3e9829bfd6b4957509a9500d2eef5dbfc8044" - integrity sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== dependencies: chalk "^2.4.2" ci-info "^2.0.0" @@ -3925,10 +3972,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" - integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -4134,9 +4181,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-descriptor@^0.1.0: version "0.1.6" @@ -4296,12 +4343,17 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@~1.0.0: version "1.0.0" @@ -4384,11 +4436,11 @@ istanbul-lib-source-maps@^3.0.1: source-map "^0.6.1" istanbul-reports@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" jest-changed-files@^24.9.0: version "24.9.0" @@ -5222,22 +5274,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -"mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" + mime-db "1.43.0" mime@1.6.0: version "1.6.0" @@ -5293,11 +5340,6 @@ minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -5430,7 +5472,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -5495,10 +5537,10 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5509,7 +5551,7 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" + tar "^4.4.2" node-releases@^1.1.44: version "1.1.45" @@ -5549,14 +5591,21 @@ normalize-path@^3.0.0: integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + version "1.4.7" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" + integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5591,9 +5640,9 @@ number-is-nan@^1.0.0: integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.7: - version "2.1.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" @@ -5620,9 +5669,9 @@ object-inspect@^1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -5647,12 +5696,12 @@ object.assign@^4.1.0: object-keys "^1.0.11" object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -5667,12 +5716,12 @@ object.fromentries@^2.0.1: has "^1.0.3" object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -5682,12 +5731,12 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -5746,14 +5795,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -5833,9 +5874,9 @@ p-is-promise@^2.0.0: integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -5989,9 +6030,9 @@ path-key@^2.0.0, path-key@^2.0.1: integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-key@^3.0.0, path-key@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" - integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" @@ -6032,9 +6073,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== pify@^2.0.0: version "2.3.0" @@ -6063,7 +6104,7 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.1: +pirates@^4.0.0, pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== @@ -6212,9 +6253,9 @@ promise-inflight@^1.0.1: integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= prompts@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" - integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== dependencies: kleur "^3.0.3" sisteransi "^1.0.3" @@ -6242,9 +6283,9 @@ prr@~1.0.1: integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= psl@^1.1.24, psl@^1.1.28: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== public-encrypt@^4.0.0: version "4.0.3" @@ -6384,9 +6425,9 @@ react-dom@^16.12.0: scheduler "^0.18.0" react-draggable@^4.0.0, react-draggable@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.0.3.tgz#6b9f76f66431c47b9070e9b805bbc520df8ca481" - integrity sha512-4vD6zms+9QGeZ2RQXzlUBw8PBYUXy+dzYX5r22idjp9YwQKIIvD/EojL0rbjS1GK4C3P0rAJnmKa8gDQYWUDyA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.2.0.tgz#40cc5209082ca7d613104bf6daf31372cc0e1114" + integrity sha512-5wFq//gEoeTYprnd4ze8GrFc+Rbnx+9RkOMR3vk4EbWxj02U6L6T3yrlKeiw4X5CtjD2ma2+b3WujghcXNRzkw== dependencies: classnames "^2.2.5" prop-types "^15.6.0" @@ -6406,9 +6447,9 @@ react-hot-loader@^4.12.18: source-map "^0.7.3" react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: - version "16.10.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" - integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== react-lifecycles-compat@^3.0.4: version "3.0.4" @@ -6424,9 +6465,9 @@ react-proxy@^1.1.7: react-deep-force-update "^1.0.0" react-resizable@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.9.0.tgz#7426f06852180e6844bbbc32ead67760d2904a65" - integrity sha512-YAls7H4+34MMDg2cPnhVfLtes//XWvrLNuxbVwawwJFIGlPvhGi8BLCcIsDdLJ2CCCxtymVotk2Hq4RtPJ7t5g== + version "1.10.1" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.10.1.tgz#f0c2cf1d83b3470b87676ce6d6b02bbe3f4d8cd4" + integrity sha512-Jd/bKOKx6+19NwC4/aMLRu/J9/krfxlDnElP41Oc+oLiUWs/zwV1S9yBfBZRnqAwQb6vQ/HRSk3bsSWGSgVbpw== dependencies: prop-types "15.x" react-draggable "^4.0.3" @@ -6476,9 +6517,9 @@ read-pkg@^5.2.0: type-fest "^0.6.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6525,6 +6566,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -6541,11 +6587,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - define-properties "^1.1.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" @@ -6565,14 +6612,14 @@ regexpu-core@^4.6.0: unicode-match-property-value-ecmascript "^1.1.0" regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + version "0.6.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" + integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== dependencies: jsesc "~0.5.0" @@ -6591,19 +6638,19 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.15" request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.3" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -6638,6 +6685,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -7015,9 +7067,9 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= sisteransi@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" - integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== slash@^2.0.0: version "2.0.0" @@ -7099,20 +7151,20 @@ source-list-map@^2.0.0: integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7276,9 +7328,9 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== string-argv@^0.3.0: version "0.3.1" @@ -7472,7 +7524,7 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4: +tar@^4.4.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -7501,9 +7553,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.1.2: - version "4.3.8" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.8.tgz#707f05f3f4c1c70c840e626addfdb1c158a17136" - integrity sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ== + version "4.6.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" + integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -7543,9 +7595,9 @@ through@^2.3.6: integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== timers-browserify@^2.0.4: version "2.0.11" @@ -7688,14 +7740,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -uglify-js@^3.1.4: - version "3.6.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.1.tgz#ae7688c50e1bdcf2f70a0e162410003cf9798311" - integrity sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ== - dependencies: - commander "2.20.0" - source-map "~0.6.1" - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -7869,9 +7913,9 @@ verror@1.10.0: extsprintf "^1.2.0" vm-browserify@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== w3c-hr-time@^1.0.1: version "1.0.1" @@ -8056,9 +8100,9 @@ whatwg-url@^6.4.1: webidl-conversions "^4.0.2" whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -8077,9 +8121,9 @@ which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: isexe "^2.0.0" which@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.1.tgz#f1cf94d07a8e571b6ff006aeb91d0300c47ef0a4" - integrity sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w== + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" @@ -8095,11 +8139,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -8187,6 +8226,13 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" From 44e200067b3640c3230f5511e8624a7c629d2f9a Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 08:22:06 -0500 Subject: [PATCH 074/101] docs(readme): document new onDrop callback arity --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f2a9e8e9..9a42401eb 100644 --- a/README.md +++ b/README.md @@ -354,7 +354,7 @@ onResize: ItemCallback, // Calls when resize is complete. onResizeStop: ItemCallback, // Calls when some element has been dropped -onDrop: (elemParams: { x: number, y: number, e: Event }) => void +onDrop: (elemParams: { x: number, y: number, w: number, h: number, e: Event }) => void ``` ### Responsive Grid Layout Props From 730f201db425129b3a6fd68ae2304f5ec69efa3a Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 08:44:21 -0500 Subject: [PATCH 075/101] release 0.18.0 --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++ dist/react-grid-layout.min.js | 6 +++--- dist/react-grid-layout.min.js.map | 2 +- package.json | 4 ++-- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed4edbe9e..add851786 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,40 @@ # Changelog +0.18.0 (Feb 25, 2020) +---- + +Thanks to all of our maintainers for this big release. 0.18.0 contains a large number of bugfixes that users have been asking for. Please read the full list so you know what to expect. Some of the biggest improvements include fixing changes of `isResizable`/`isDraggable` without a remount ([#892](https://github.com/STRML/react-grid-layout/pull/892)), fixes to prop changes on `ResponsiveReactGridLayout` ([#1090](https://github.com/STRML/react-grid-layout/pull/1090)), `shouldComponentUpdate` improvements for speed ([#1123](https://github.com/STRML/react-grid-layout/pull/1123)), improvements to droppability ([#1127](https://github.com/STRML/react-grid-layout/pull/1127)), and much more. + +### (Potentially) Breaking Changes + +- You can now locally set `isDraggable`/`isResizable` on a `static` item and it will have that property. This could be useful, but be sure to check your layouts if you use `static`. Relates to [#1060](https://github.com/STRML/react-grid-layout/pull/1060). +- `shouldComponentUpdate` is now implemented on major components to improve render speed while you manipulate the layout. In our testing there are no issues. If you encounter one, please open an issue asap and we'll get it fixed. See [#1123](https://github.com/STRML/react-grid-layout/pull/1123). + +### New Features + +- You can now manipulate `isDraggable`/`isResizable` without the child component remounting. We do this by always rendering the child `` and `` wrappers, optionally in a `disabled` state. This feature has been heavily requested. [#892](https://github.com/STRML/react-grid-layout/pull/892) +- The event is now passed as `e` on the `onDrop` callback. [#1065](https://github.com/STRML/react-grid-layout/pull/1065) +- Pass `transformScale` to `Resizable`. [#1075](https://github.com/STRML/react-grid-layout/pull/1075) + +### Bugfixes + +- Fix handling of width changes in `ResponsiveReactGridLayout`. [#1090](https://github.com/STRML/react-grid-layout/pull/1090) + - Fixes ignored changes of breakpoints and columns. See also [issue #1083](https://github.com/STRML/react-grid-layout/issues/1083). +- Forbid layout change on click without drag. [#1044](https://github.com/STRML/react-grid-layout/pull/1044) +- Do not mutate `layouts` prop. [#1064](https://github.com/STRML/react-grid-layout/pull/1064) +- Ensure locally set `isDraggable`/`isResizable` on a `GridItem` overrides the global setting on the layout. [#1060](https://github.com/STRML/react-grid-layout/pull/1060) +- Avoid additional element jumping when an item is dropped. [#1127](https://github.com/STRML/react-grid-layout/issues/1127) +- Don't use `String#includes` for Firefox test. [#1096](https://github.com/STRML/react-grid-layout/pull/1096) + +### Internal Refactors + +- Added `shouldComponentUpdate` to major elements for speed. Significant [performance improvements](https://github.com/STRML/react-grid-layout/pull/1032#issuecomment-541604763) while dragging. Started in [#1032](https://github.com/STRML/react-grid-layout/pull/1032) and finished in [#1123](https://github.com/STRML/react-grid-layout/pull/1123). + - A [fun trick for the curious](https://github.com/STRML/react-grid-layout/blob/44e200067b3640c3230f5511e8624a7c629d2f9a/lib/fastRGLPropsEqual.js). +- Internal refactor of dropping capability. It is now more predictable and uses similar unit labels (`left`, `top`) to other features. [#1128](https://github.com/STRML/react-grid-layout/issues/1128) +- Upgrade devDependencies. +- Remove ESPower from test suite (not useful with Jest). + + 0.17.1 (Oct 29, 2019) ---- diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index 05838fff5..ee8c630d1 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -1,12 +1,12 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],e):"object"==typeof exports?exports.ReactGridLayout=e(require("react"),require("react-dom")):t.ReactGridLayout=e(t.React,t.ReactDOM)}(window,(function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=11)}([function(t,e,n){t.exports=n(12)()},function(t,e,n){"use strict";n.r(e),n.d(e,"bottom",(function(){return p})),n.d(e,"cloneLayout",(function(){return f})),n.d(e,"cloneLayoutItem",(function(){return d})),n.d(e,"childrenEqual",(function(){return h})),n.d(e,"collides",(function(){return y})),n.d(e,"compact",(function(){return g})),n.d(e,"compactItem",(function(){return v})),n.d(e,"correctBounds",(function(){return O})),n.d(e,"getLayoutItem",(function(){return w})),n.d(e,"getFirstCollision",(function(){return j})),n.d(e,"getAllCollisions",(function(){return S})),n.d(e,"getStatics",(function(){return x})),n.d(e,"moveElement",(function(){return D})),n.d(e,"moveElementAwayFromCollision",(function(){return P})),n.d(e,"perc",(function(){return _})),n.d(e,"setTransform",(function(){return R})),n.d(e,"setTopLeft",(function(){return k})),n.d(e,"sortLayoutItems",(function(){return z})),n.d(e,"sortLayoutItemsByRowCol",(function(){return C})),n.d(e,"sortLayoutItemsByColRow",(function(){return E})),n.d(e,"synchronizeLayoutWithChildren",(function(){return T})),n.d(e,"validateLayout",(function(){return M})),n.d(e,"autoBindHandlers",(function(){return L})),n.d(e,"noop",(function(){return W}));var r=n(3),o=n.n(r),a=n(2),i=n.n(a);function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var u=!0,l=!1;function p(t){for(var e,n=0,r=0,o=t.length;rn&&(n=e);return n}function f(t){for(var e=Array(t.length),n=0,r=t.length;n=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function g(t,e,n){for(var r=x(t),o=z(t,e),a=Array(t.length),i=0,s=o.length;ie.y+e.h)break;y(e,i)&&m(t,i,n+e[o],r)}}e[r]=n}function v(t,e,n,r,o){var a,i="horizontal"===n;if("vertical"===n)for(e.y=Math.min(p(t),e.y);e.y>0&&!j(t,e);)e.y--;else if(i)for(e.y=Math.min(p(t),e.y);e.x>0&&!j(t,e);)e.x--;for(;a=j(t,e);)i?m(o,e,a.x+a.w,"x"):m(o,e,a.y+a.h,"y"),i&&e.x+e.w>r&&(e.x=r-e.w,e.y++);return e}function O(t,e){for(var n=x(t),r=0,o=t.length;re.cols&&(a.x=e.cols-a.w),a.x<0&&(a.x=0,a.w=e.cols),a.static)for(;j(n,a);)a.y++;else n.push(a)}return t}function w(t,e){for(var n=0,r=t.length;n=r:"horizontal"===i&&"number"==typeof n&&c>=n)&&(l=l.reverse());var p=S(l,e);if(a&&p.length)return N("Collision prevented on ".concat(e.i,", reverting.")),e.x=c,e.y=u,e.moved=!1,t;for(var f=0,d=p.length;fe.y||t.y===e.y&&t.x>e.x?1:t.y===e.y&&t.x===e.x?0:-1}))}function E(t){return[].concat(t).sort((function(t,e){return t.x>e.x||t.x===e.x&&t.y>e.y?1:-1}))}function T(t,e,n,r){t=t||[];var o=[];return i.a.Children.forEach(e,(function(e,n){var r=w(t,String(e.key));if(r)o[n]=d(r);else{!u&&e.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var a=e.props["data-grid"]||e.props._grid;a?(u||M([a],"ReactGridLayout.children"),o[n]=d(function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var r=0,o=t.length;ru))return!1;var p=s.get(t);if(p&&s.get(e))return p==e;var f=-1,d=!0,h=n&i?new Pt:void 0;for(s.set(t,e),s.set(e,t);++f-1},xt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Dt.prototype.clear=function(){this.size=0,this.__data__={hash:new St,map:new(pt||xt),string:new St}},Dt.prototype.delete=function(t){var e=Wt(this,t).delete(t);return this.size-=e?1:0,e},Dt.prototype.get=function(t){return Wt(this,t).get(t)},Dt.prototype.has=function(t){return Wt(this,t).has(t)},Dt.prototype.set=function(t,e){var n=Wt(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Pt.prototype.add=Pt.prototype.push=function(t){return this.__data__.set(t,o),this},Pt.prototype.has=function(t){return this.__data__.has(t)},_t.prototype.clear=function(){this.__data__=new xt,this.size=0},_t.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},_t.prototype.get=function(t){return this.__data__.get(t)},_t.prototype.has=function(t){return this.__data__.has(t)},_t.prototype.set=function(t,e){var n=this.__data__;if(n instanceof xt){var o=n.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=s}function $t(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Jt(t){return null!=t&&"object"==typeof t}var Kt=A?function(t){return function(e){return t(e)}}(A):function(t){return Jt(t)&&Vt(t.length)&&!!z[zt(t)]};function Qt(t){return null!=(e=t)&&Vt(e.length)&&!Gt(e)?Rt(t):Mt(t);var e}n.exports=function(t,e){return Et(t,e)}}).call(this,n(14),n(15)(t))},function(t,e,n){"use strict";n.r(e),n.d(e,"getBreakpointFromWidth",(function(){return o})),n.d(e,"getColsFromBreakpoint",(function(){return a})),n.d(e,"findOrGenerateResponsiveLayout",(function(){return i})),n.d(e,"sortBreakpoints",(function(){return s}));var r=n(1);function o(t,e){for(var n=s(t),r=n[0],o=1,a=n.length;ot[i]&&(r=i)}return r}function a(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function i(t,e,n,o,a,i){if(t[n])return Object(r.cloneLayout)(t[n]);for(var c=t[o],u=s(e),l=u.slice(u.indexOf(n)),p=0,f=l.length;pn&&(n=e);return n}function l(t){for(var e=Array(t.length),n=0,r=t.length;n=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function g(t,e,n){for(var r=x(t),o=k(t,e),a=Array(t.length),i=0,s=o.length;ie.y+e.h)break;y(e,i)&&m(t,i,n+e[o],r)}}e[r]=n}function v(t,e,n,r,o){var a,i="horizontal"===n;if("vertical"===n)for(e.y=Math.min(c(t),e.y);e.y>0&&!S(t,e);)e.y--;else if(i)for(e.y=Math.min(c(t),e.y);e.x>0&&!S(t,e);)e.x--;for(;a=S(t,e);)i?m(o,e,a.x+a.w,"x"):m(o,e,a.y+a.h,"y"),i&&e.x+e.w>r&&(e.x=r-e.w,e.y++);return e}function w(t,e){for(var n=x(t),r=0,o=t.length;re.cols&&(a.x=e.cols-a.w),a.x<0&&(a.x=0,a.w=e.cols),a.static)for(;S(n,a);)a.y++;else n.push(a)}return t}function O(t,e){for(var n=0,r=t.length;n=r:"horizontal"===i&&"number"==typeof n&&u>=n)&&(l=l.reverse());var p=j(l,e);if(a&&p.length)return H("Collision prevented on ".concat(e.i,", reverting.")),e.x=u,e.y=c,e.moved=!1,t;for(var f=0,h=p.length;fe.y||t.y===e.y&&t.x>e.x?1:t.y===e.y&&t.x===e.x?0:-1}))}function E(t){return[].concat(t).sort((function(t,e){return t.x>e.x||t.x===e.x&&t.y>e.y?1:-1}))}function T(t,e,n,r){t=t||[];var o=[];return i.a.Children.forEach(e,(function(e,n){var r=O(t,String(e.key));if(r)o[n]=p(r);else{0;var a=e.props["data-grid"]||e.props._grid;o[n]=p(a?function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var r=0,o=t.length;rs))return!1;var c=a.get(t);if(c&&a.get(e))return c==e;var l=-1,p=!0,f=2&n?new at:void 0;for(a.set(t,e),a.set(e,t);++l-1},rt.prototype.set=function(t,e){var n=this.__data__,r=ut(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},ot.prototype.clear=function(){this.size=0,this.__data__={hash:new nt,map:new(U||rt),string:new nt}},ot.prototype.delete=function(t){var e=gt(this,t).delete(t);return this.size-=e?1:0,e},ot.prototype.get=function(t){return gt(this,t).get(t)},ot.prototype.has=function(t){return gt(this,t).has(t)},ot.prototype.set=function(t,e){var n=gt(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},at.prototype.add=at.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},at.prototype.has=function(t){return this.__data__.has(t)},it.prototype.clear=function(){this.__data__=new rt,this.size=0},it.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},it.prototype.get=function(t){return this.__data__.get(t)},it.prototype.has=function(t){return this.__data__.has(t)},it.prototype.set=function(t,e){var n=this.__data__;if(n instanceof rt){var r=n.__data__;if(!U||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new ot(r)}return n.set(t,e),this.size=n.size,this};var mt=I?function(t){return null==t?[]:(t=Object(t),function(t,e){for(var n=-1,r=null==t?0:t.length,o=0,a=[];++n-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}function Rt(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zt(t){return null!=t&&"object"==typeof t}var kt=m?function(t){return function(e){return t(e)}}(m):function(t){return zt(t)&&_t(t.length)&&!!c[ct(t)]};function Ct(t){return null!=(e=t)&&_t(e.length)&&!Pt(e)?st(t):ht(t);var e}n.exports=function(t,e){return pt(t,e)}}).call(this,n(12),n(13)(t))},function(t,e,n){"use strict";n.r(e),n.d(e,"getBreakpointFromWidth",(function(){return o})),n.d(e,"getColsFromBreakpoint",(function(){return a})),n.d(e,"findOrGenerateResponsiveLayout",(function(){return i})),n.d(e,"sortBreakpoints",(function(){return s}));var r=n(1);function o(t,e){for(var n=s(t),r=n[0],o=1,a=n.length;ot[i]&&(r=i)}return r}function a(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function i(t,e,n,o,a,i){if(t[n])return Object(r.cloneLayout)(t[n]);for(var u=t[o],c=s(e),l=c.slice(c.indexOf(n)),p=0,f=l.length;p0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){"use strict";n.d(e,"e",(function(){return s})),n.d(e,"g",(function(){return c})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"f",(function(){return p})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return d}));var r=n(1),o=n(6),a=n.n(o),i=n(2);function s(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o="string"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=h(t);if("string"==typeof o){var s,c=a.ownerDocument,u=c.defaultView;if(!((s="parent"===o?a.parentNode:c.querySelector(o))instanceof u.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');var l=u.getComputedStyle(a),p=u.getComputedStyle(s);o={left:-a.offsetLeft+Object(r.c)(p.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(p.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(s)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(p.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(s)-Object(i.k)(a)-a.offsetTop+Object(r.c)(p.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function c(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function u(t){return"both"===t.props.axis||"x"===t.props.axis}function l(t){return"both"===t.props.axis||"y"===t.props.axis}function p(t,e,n){var r="number"==typeof e?Object(i.e)(t,e):null;if("number"==typeof e&&!r)return null;var o=h(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function f(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=h(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function h(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}},function(t,e,n){"use strict";function r(){}n.d(e,"a",(function(){return r}))},function(t,e){t.exports=r},function(t,e){t.exports=o},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return w}));var r=n(5),o=n.n(r),a=n(0),i=n.n(a),s=n(6),c=n.n(s),u=n(2),l=n(3),p=n(1),f=n(4);function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(u.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(u.i)(t.target,n.props.cancel,e))){var o=Object(u.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,g(n));if(null!=a){var i=a.x,s=a.y,p=Object(l.c)(g(n),i,s);Object(f.a)("DraggableCore: handleDragStart: %j",p),Object(f.a)("calling",n.props.onStart),!1!==n.props.onStart(t,p)&&(n.props.enableUserSelectHack&&Object(u.b)(r),n.setState({dragging:!0,lastX:i,lastY:s}),Object(u.a)(r,O.move,n.handleDrag),Object(u.a)(r,O.stop,n.handleDragStop))}}})),m(g(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,g(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,s=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}(Object(l.g)(n.props.grid,a,i),2);if(a=s[0],i=s[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var c=Object(l.c)(g(n),r,o);if(Object(f.a)("DraggableCore: handleDrag: %j",c),!1!==n.props.onDrag(t,c))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var u=document.createEvent("MouseEvents");u.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(u)}}})),m(g(n),"handleDragStop",(function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,g(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(g(n),r,o),i=c.a.findDOMNode(g(n));i&&n.props.enableUserSelectHack&&Object(u.n)(i.ownerDocument),Object(f.a)("DraggableCore: handleDragStop: %j",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(f.a)("DraggableCore: Removing handlers"),Object(u.m)(i.ownerDocument,O.move,n.handleDrag),Object(u.m)(i.ownerDocument,O.stop,n.handleDragStop))}}})),m(g(n),"onMouseDown",(function(t){return O=v.mouse,n.handleDragStart(t)})),m(g(n),"onMouseUp",(function(t){return O=v.mouse,n.handleDragStop(t)})),m(g(n),"onTouchStart",(function(t){return O=v.touch,n.handleDragStart(t)})),m(g(n),"onTouchEnd",(function(t){return O=v.touch,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&b(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=c.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(u.m)(e,v.mouse.move,this.handleDrag),Object(u.m)(e,v.touch.move,this.handleDrag),Object(u.m)(e,v.mouse.stop,this.handleDragStop),Object(u.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(u.n)(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(u.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&h(n.prototype,r),e}();m(w,"displayName","DraggableCore"),m(w,"propTypes",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:p.a,style:p.a,transform:p.a}),m(w,"defaultProps",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r; +*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&x(t,e)}(e,o.a.Component),S(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(y.a)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:v({},n)})}}]),S(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,c=e.position,u=e.positionOffset,d=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),y={},g=null,m=!Boolean(c)||this.state.dragging,O=c||r,w={x:Object(f.a)(this)&&m?this.state.x:O.x,y:Object(f.b)(this)&&m?this.state.y:O.y};this.state.isElementSVG?g=Object(p.d)(w,u):y=Object(p.c)(w,u);var j=l()(n.props.className||"",a,(D(t={},i,this.state.dragging),D(t,s,this.state.dragged),t));return o.a.createElement(h.default,b({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:j,style:v({},n.props.style,{},y),transform:g}))}}]),e}();D(P,"displayName","Draggable"),D(P,"propTypes",v({},h.default.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),D(P,"defaultProps",v({},h.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){"use strict";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(6),l=n.n(u),p=n(1),f=n(5),d=n.n(f),h=n(7),y=n(10);function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;et.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>d.x&&(g=Math.min(g,t.x)),t.y>d.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(d.w=g-d.x),Number.isFinite(b)&&(d.h=b-d.y)}}h||(d.w=e,d.h=n);var m={w:d.w,h:d.h,x:d.x,y:d.y,static:!0,i:t};this.props.onResize(s,c,d,m,o,a),this.setState({layout:Object(p.compact)(s,M(this.props),l),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,c=i.oldResizeItem,u=this.props.cols,l=Object(p.getLayoutItem)(s,t);this.props.onResizeStop(s,c,l,null,o,a);var f=Object(p.compact)(s,M(this.props),u),d=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,d)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,c=e.maxRows,u=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(x,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:c,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:u,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(p.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,c=r.containerPadding,u=r.rowHeight,l=r.maxRows,f=r.isDraggable,d=r.isResizable,h=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,O=m.droppingPosition,w=Boolean(!n.static&&f&&(n.isDraggable||null==n.isDraggable)),j=Boolean(!n.static&&d&&(n.isResizable||null==n.isResizable));return o.a.createElement(x,{containerWidth:a,cols:i,margin:s,containerPadding:c||s,maxRows:l,rowHeight:u,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:w,isResizable:j,useCSSTransforms:h&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?O:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=l()(L,n),s=_({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:p.noop,onDragLeave:a?this.onDragLeave:p.noop,onDragEnter:a?this.onDragEnter:p.noop,onDragOver:a?this.onDragOver:p.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&k(n.prototype,r),a&&k(n,a),e}(o.a.Component);T(W,"displayName","ReactGridLayout"),T(W,"propTypes",{className:i.a.string,style:i.a.object,width:i.a.number,autoSize:i.a.bool,cols:i.a.number,draggableCancel:i.a.string,draggableHandle:i.a.string,verticalCompact:function(t){t.verticalCompact,0},compactType:i.a.oneOf(["vertical","horizontal"]),layout:function(t){var e=t.layout;void 0!==e&&Object(p.validateLayout)(e,"layout")},margin:i.a.arrayOf(i.a.number),containerPadding:i.a.arrayOf(i.a.number),rowHeight:i.a.number,maxRows:i.a.number,isDraggable:i.a.bool,isResizable:i.a.bool,preventCollision:i.a.bool,useCSSTransforms:i.a.bool,transformScale:i.a.number,isDroppable:i.a.bool,onLayoutChange:i.a.func,onDragStart:i.a.func,onDrag:i.a.func,onDragStop:i.a.func,onResizeStart:i.a.func,onResize:i.a.func,onResizeStop:i.a.func,onDrop:i.a.func,droppingItem:i.a.shape({i:i.a.string.isRequired,w:i.a.number.isRequired,h:i.a.number.isRequired}),children:function(t,e){var n=t[e],r={};o.a.Children.forEach(n,(function(t){if(r[t.key])throw new Error('Duplicate child key "'+t.key+'" found! This will cause problems in ReactGridLayout.');r[t.key]=!0}))}}),T(W,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:p.noop,onDragStart:p.noop,onDrag:p.noop,onDragStop:p.noop,onResizeStart:p.noop,onResize:p.noop,onResizeStop:p.noop,onDrop:p.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(16);function s(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles"]),f=p.className?p.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:c,minConstraints:u,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:d},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},h)))},o}(r.default.Component);e.default=l,u(l,"propTypes",{height:o.default.number,width:o.default.number}),u(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return S}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),c=n.n(s),u=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(){return(d=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t,e){for(var n=0;n=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function M(t){return"both"===t.props.axis||"x"===t.props.axis}function L(t){return"both"===t.props.axis||"y"===t.props.axis}function N(t,e,n){var r="number"==typeof e?function(t,e){return t.targetTouches&&p(t.targetTouches,(function(t){return e===t.identifier}))||t.changedTouches&&p(t.changedTouches,(function(t){return e===t.identifier}))}(t,e):null;if("number"==typeof e&&!r)return null;var o=A(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function H(t,e,n){var r=t.state,o=!h(r.lastX),a=A(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function W(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function A(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function q(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!j(t.target,n.props.handle,e)||n.props.cancel&&j(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=N(t,o,U(n));if(null!=a){var i=a.x,s=a.y,c=H(U(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&C(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,$.move,n.handleDrag),x(r,$.stop,n.handleDragStop))}}})),F(U(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=B((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var p=H(U(n),i,s);if(!1!==n.props.onDrag(t,p))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(f)}}})),F(U(n),"handleDragStop",(function(t){if(n.state.dragging){var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r=e.x,o=e.y,a=H(U(n),r,o),i=u.a.findDOMNode(U(n));i&&n.props.enableUserSelectHack&&E(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(D(i.ownerDocument,$.move,n.handleDrag),D(i.ownerDocument,$.stop,n.handleDragStop))}}})),F(U(n),"onMouseDown",(function(t){return $=V,n.handleDragStart(t)})),F(U(n),"onMouseUp",(function(t){return $=V,n.handleDragStop(t)})),F(U(n),"onTouchStart",(function(t){return $=G,n.handleDragStart(t)})),F(U(n),"onTouchEnd",(function(t){return $=G,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&X(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;D(e,V.move,this.handleDrag),D(e,G.move,this.handleDrag),D(e,V.stop,this.handleDragStop),D(e,G.stop,this.handleDragStop),this.props.enableUserSelectHack&&E(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:T(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&q(n.prototype,r),e}();function K(t){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&at(t,e)}(e,o.a.Component),ot(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:tt({},n)}}}]),ot(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,p=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),f={},h=null,d=!Boolean(u)||this.state.dragging,y=u||r,g={x:M(this)&&d?this.state.x:y.x,y:L(this)&&d?this.state.y:y.y};this.state.isElementSVG?h=function(t,e){return k(t,e,"")}(g,c):f=function(t,e){var n=k(t,e,"px");return w({},b("transform",m),n)}(g,c);var v=l()(n.props.className||"",a,(it(t={},i,this.state.dragging),it(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:tt({},n.props.style,{},f),transform:h}))}}]),e}();it(st,"displayName","Draggable"),it(st,"propTypes",tt({},J.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),it(st,"defaultProps",tt({},J.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(3),i=n.n(a),s=n(6),u=n.n(s),c=n(1);function l(t){var e=t.margin,n=t.containerPadding,r=t.containerWidth,o=t.cols;return(r-e[0]*(o-1)-2*n[0])/o}function p(t,e,n,r,o,a){var i=t.margin,s=t.containerPadding,u=t.rowHeight,c=l(t),p={};return a&&a.resizing?(p.width=Math.round(a.resizing.width),p.height=Math.round(a.resizing.height)):(p.width=r===1/0?r:Math.round(c*r+Math.max(0,r-1)*i[0]),p.height=o===1/0?o:Math.round(u*o+Math.max(0,o-1)*i[1])),a&&a.dragging?(p.top=Math.round(a.dragging.top),p.left=Math.round(a.dragging.left)):(p.top=Math.round((u+i[1])*n+s[1]),p.left=Math.round((c+i[0])*e+s[0])),p}function f(t,e,n,r,o){var a=t.margin,i=t.cols,s=t.rowHeight,u=t.maxRows,c=l(t),p=Math.round((n-a[0])/(c+a[0])),f=Math.round((e-a[1])/(s+a[1]));return{x:p=Math.max(Math.min(p,i-r),0),y:f=Math.max(Math.min(f,u-o),0)}}var h=n(5),d=n.n(h),y=n(0),g=n.n(y),b=n(7),m=n(10);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:t.cols,containerPadding:t.containerPadding,containerWidth:t.containerWidth,margin:t.margin,maxRows:t.maxRows,rowHeight:t.rowHeight}}},{key:"createStyle",value:function(t){var e,n=this.props,r=n.usePercentages,o=n.containerWidth;return n.useCSSTransforms?e=Object(c.setTransform)(t):(e=Object(c.setTopLeft)(t),r&&(e.left=Object(c.perc)(t.left/o),e.width=Object(c.perc)(t.width/o))),e}},{key:"mixinDraggable",value:function(t,e){return o.a.createElement(b.DraggableCore,{disabled:!e,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale},t)}},{key:"mixinResizable",value:function(t,e,n){var r=this.props,a=r.cols,i=r.x,s=r.minW,u=r.minH,c=r.maxW,l=r.maxH,f=r.transformScale,h=this.getPositionParams(),d=p(h,0,0,a-i,0).width,y=p(h,0,0,s,u),g=p(h,0,0,c,l),b=[y.width,y.height],v=[Math.min(g.width,d),Math.min(g.height,1/0)];return o.a.createElement(m.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:e.width,height:e.height,minConstraints:b,maxConstraints:v,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f},t)}},{key:"onResizeHandler",value:function(t,e,n){var r=e.node,o=e.size,a=this.props[n];if(a){var i=this.props,s=i.cols,u=i.x,c=i.y,p=i.i,f=i.maxW,h=i.minW,d=i.maxH,y=i.minH,g=function(t,e,n,r,o){var a=t.margin,i=t.maxRows,s=t.cols,u=t.rowHeight,c=l(t),p=Math.round((e+a[0])/(c+a[0])),f=Math.round((n+a[1])/(u+a[1]));return{w:p=Math.max(Math.min(p,s-r),0),h:f=Math.max(Math.min(f,i-o),0)}}(this.getPositionParams(),o.width,o.height,u,c),b=g.w,m=g.h;b=Math.min(b,s-u),b=Math.max(b,1),b=Math.max(Math.min(b,f),h),m=Math.max(Math.min(m,d),y),this.setState({resizing:"onResizeStop"===n?null:o}),a.call(this,p,b,m,{e:t,node:r,size:o})}}},{key:"render",value:function(){var t=this.props,e=t.x,n=t.y,r=t.w,a=t.h,i=t.isDraggable,s=t.isResizable,c=t.droppingPosition,l=t.useCSSTransforms,f=p(this.getPositionParams(),e,n,r,a,this.state),h=o.a.Children.only(this.props.children),d=o.a.cloneElement(h,{className:u()("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(c),cssTransforms:l}),style:O({},this.props.style,{},h.props.style,{},this.createStyle(f))});return d=this.mixinResizable(d,f,s),d=this.mixinDraggable(d,i)}}])&&j(n.prototype,r),a&&j(n,a),e}(o.a.Component);R(z,"propTypes",{children:g.a.element,cols:g.a.number.isRequired,containerWidth:g.a.number.isRequired,rowHeight:g.a.number.isRequired,margin:g.a.array.isRequired,maxRows:g.a.number.isRequired,containerPadding:g.a.array.isRequired,x:g.a.number.isRequired,y:g.a.number.isRequired,w:g.a.number.isRequired,h:g.a.number.isRequired,minW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("minWidth not Number"):n>t.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>h.x&&(g=Math.min(g,t.x)),t.y>h.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(h.w=g-h.x),Number.isFinite(b)&&(h.h=b-h.y)}}d||(h.w=e,h.h=n);var m={w:h.w,h:h.h,x:h.x,y:h.y,static:!0,i:t};this.props.onResize(s,u,h,m,o,a),this.setState({layout:Object(c.compact)(s,Object(c.compactType)(this.props),p),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,u=i.oldResizeItem,l=this.props.cols,p=Object(c.getLayoutItem)(s,t);this.props.onResizeStop(s,u,p,null,o,a);var f=Object(c.compact)(s,Object(c.compactType)(this.props),l),h=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,h)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,u=e.maxRows,c=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(z,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:c,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(c.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,u=r.containerPadding,l=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,d=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,w=m.droppingPosition,O="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,S="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h;return o.a.createElement(z,{containerWidth:a,cols:i,margin:s,containerPadding:u||s,maxRows:p,rowHeight:l,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:O,isResizable:S,useCSSTransforms:d&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?w:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=u()("react-grid-layout",n),s=T({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:c.noop,onDragLeave:a?this.onDragLeave:c.noop,onDragEnter:a?this.onDragEnter:c.noop,onDragOver:a?this.onDragOver:c.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&L(n.prototype,r),a&&L(n,a),e}(o.a.Component);A(B,"displayName","ReactGridLayout"),A(B,"propTypes",k),A(B,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:c.noop,onDragStart:c.noop,onDrag:c.noop,onDragStop:c.noop,onResizeStart:c.noop,onResize:c.noop,onResizeStop:c.noop,onDrop:c.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(17);function s(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"])),f=l.className?l.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:u,minConstraints:c,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:h},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},d)))},o}(r.default.Component);e.default=l,c(l,"propTypes",{height:o.default.number,width:o.default.number}),c(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return P}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),u=n.n(s),c=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(){return(h=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function h(t,e){for(var n=0;n;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { x: number, y: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n if (l.static) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { perc, setTopLeft, setTransform } from \"./utils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.droppingPosition && prevProps.droppingPosition) {\n this.moveDroppingItem(prevProps);\n }\n }\n\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevProps.droppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.x !== prevProps.droppingPosition.x) ||\n droppingPosition.y !== prevProps.droppingPosition.y;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.x,\n deltaY: droppingPosition.y\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.x - dragging.left;\n const deltaY = droppingPosition.y - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n // Helper for generating column width\n calcColWidth(): number {\n const { margin, containerPadding, containerWidth, cols } = this.props;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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(\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n ): Position {\n const { margin, containerPadding, rowHeight } = this.props;\n const colWidth = this.calcColWidth();\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n }\n\n /**\n * Translate x and y coordinates from pixels to grid units.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @return {Object} x and y in grid units.\n */\n calcXY(top: number, left: number): { x: number, y: number } {\n const { margin, cols, rowHeight, w, h, maxRows } = this.props;\n const colWidth = this.calcColWidth();\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n }\n\n /**\n * Given a height and width in pixel values, calculate grid units.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @return {Object} w, h as grid units.\n */\n calcWH({\n height,\n width\n }: {\n height: number,\n width: number\n }): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight, x, y } = this.props;\n const colWidth = this.calcColWidth();\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child: ReactElement): ReactElement {\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(\n child: ReactElement,\n position: Position\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH } = this.props;\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = this.calcPosition(0, 0, cols - x, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = this.calcPosition(0, 0, minW, minH);\n const maxes = this.calcPosition(0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n if (!this.props.onDrag) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDrag &&\n this.props.onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = this.calcXY(newPosition.top, newPosition.left);\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = this.calcWH(size);\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = this.calcPosition(x, y, w, h, this.state);\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n if (isResizable) newChild = this.mixinResizable(newChild, pos);\n\n // Draggable support. This is always on, except for with placeholders.\n if (isDraggable) newChild = this.mixinDraggable(newChild);\n\n return newChild;\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n validateLayout,\n getAllCollisions,\n noop\n} from \"./utils\";\nimport GridItem from \"./GridItem\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n EventCallback,\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number\n }) => void,\n children: ReactChildrenArray>\n};\n// End Types\n\nconst compactType = (props: Props): CompactType => {\n const { verticalCompact, compactType } = props || {};\n\n return verticalCompact === false ? null : compactType;\n};\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = navigator.userAgent.toLowerCase().includes(\"firefox\");\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n static propTypes = {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n };\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n if (this.state.activeDrag) {\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n }\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Parse 'static'. Any properties defined directly on the grid item will take precedence.\n const draggable = Boolean(\n !l.static && isDraggable && (l.isDraggable || l.isDraggable == null)\n );\n const resizable = Boolean(\n !l.static && isResizable && (l.isResizable || l.isResizable == null)\n );\n\n return (\n \n {child}\n \n );\n }\n\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n if (\n isFirefox &&\n !e.nativeEvent.target.className.includes(layoutClassName)\n ) {\n return false;\n }\n\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { x: layerX, y: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: 0,\n y: 0,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const shouldUpdatePosition =\n this.state.droppingPosition.x != layerX ||\n this.state.droppingPosition.y != layerY;\n shouldUpdatePosition && this.setState({ droppingPosition });\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = () => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se']\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(this.props);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(nextProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = nextProps;\n const newBreakpoint =\n nextProps.breakpoint ||\n getBreakpointFromWidth(nextProps.breakpoints, nextProps.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n this.props.breakpoints !== breakpoints ||\n this.props.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in layouts))\n layouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n nextProps.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n layouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, layouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(nextProps.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n nextProps.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n nextProps.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {\n width: number\n};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ReactGridLayout/webpack/universalModuleDefinition","webpack://ReactGridLayout/webpack/bootstrap","webpack://ReactGridLayout/./node_modules/prop-types/index.js","webpack://ReactGridLayout/./lib/utils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://ReactGridLayout/./node_modules/lodash.isequal/index.js","webpack://ReactGridLayout/./lib/responsiveUtils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack://ReactGridLayout/./node_modules/classnames/index.js","webpack://ReactGridLayout/./node_modules/react-draggable/build/web/react-draggable.min.js","webpack://ReactGridLayout/./lib/calculateUtils.js","webpack://ReactGridLayout/./lib/GridItem.jsx","webpack://ReactGridLayout/./lib/ReactGridLayoutPropTypes.js","webpack://ReactGridLayout/./lib/ReactGridLayout.jsx","webpack://ReactGridLayout/./node_modules/react-resizable/build/Resizable.js","webpack://ReactGridLayout/./node_modules/react-resizable/index.js","webpack://ReactGridLayout/./index-dev.js","webpack://ReactGridLayout/(webpack)/buildin/global.js","webpack://ReactGridLayout/(webpack)/buildin/module.js","webpack://ReactGridLayout/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactGridLayout/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/utils.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/ResizableBox.js","webpack://ReactGridLayout/./lib/ResponsiveReactGridLayout.jsx","webpack://ReactGridLayout/./lib/components/WidthProvider.jsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","bottom","layout","bottomY","max","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","w","x","minW","maxW","minH","maxH","moved","Boolean","static","isDraggable","isResizable","childrenEqual","a","b","isEqual","React","Children","map","fastRGLPropsEqual","fastPositionEqual","left","top","width","height","collides","l1","l2","compact","compactType","cols","compareWith","getStatics","sorted","sortLayoutItems","out","compactItem","push","indexOf","heightWidth","resolveCompactionCollision","item","moveToCoord","axis","sizeProp","otherItem","fullLayout","compactH","Math","min","getFirstCollision","correctBounds","bounds","collidesWith","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","log","String","oldX","oldY","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","compactV","fakeItem","undefined","perc","num","setTransform","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTopLeft","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","concat","sort","synchronizeLayoutWithChildren","initialLayout","children","forEach","child","exists","g","props","_grid","validateLayout","contextName","subProps","isArray","Error","j","verticalCompact","autoBindHandlers","el","fns","noop","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","mapToArray","result","size","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","hasOwn","classNames","classes","argType","inner","apply","join","default","DraggableCore","resetWarningCache","isRequired","bool","number","string","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","u","f","isNaN","parseInt","toUpperCase","document","documentElement","style","v","getOwnPropertyDescriptor","configurable","writable","O","S","D","parentNode","attachEvent","addEventListener","P","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","E","clientWidth","borderLeftWidth","borderRightWidth","T","paddingTop","paddingBottom","N","paddingLeft","paddingRight","C","M","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","body","classList","className","match","k","remove","selection","empty","getSelection","removeAllRanges","_","getOwnPropertyDescriptors","defineProperties","touchAction","X","Y","L","targetTouches","identifier","changedTouches","I","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","offsetParent","scale","R","state","lastX","deltaX","deltaY","lastY","A","findDOMNode","U","iterator","V","next","done","return","TypeError","W","B","setPrototypeOf","getPrototypeOf","__proto__","H","ReferenceError","q","G","z","start","move","stop","F","J","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","target","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","round","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","only","onTouchStart","onMouseUp","onTouchEnd","K","Q","assign","tt","et","st","nt","rt","ot","at","it","ut","dragged","slackX","slackY","$","right","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","defaultPosition","prevPropsPosition","isElementSVG","console","warn","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","Z","onDragStart","onDragStop","propTypes","defaultProps","calcGridColWidth","positionParams","margin","containerPadding","containerWidth","calcGridItemPosition","rowHeight","colWidth","resizing","Infinity","calcXY","maxRows","GridItem","newPosition","parentRect","clientRect","cLeft","transformScale","pLeft","cTop","pTop","getPositionParams","callbackData","onResizeHandler","nextProps","nextState","oldPosition","useCSSTransforms","prevProps","moveDroppingItem","droppingPosition","prevDroppingPosition","currentNode","ReactDOM","shouldDrag","pos","usePercentages","maxWidth","mins","maxes","minConstraints","maxConstraints","draggableOpts","onResizeStop","onResizeStart","onResize","handlerName","handler","calcWH","newChild","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","propName","autoSize","draggableCancel","draggableHandle","isDroppable","onLayoutChange","onDrop","droppingItem","isFirefox","navigator","userAgent","ReactGridLayout","context","activeDrag","mounted","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","layerX","layerY","calculatedPosition","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","find","prevState","newLayoutBase","propsLayout","onLayoutMaybeChanged","nbRow","containerPaddingY","placeholder","hasCollisions","leastX","leastY","Number","isFinite","isDroppingItem","draggable","resizable","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","ReactGridLayoutPropTypes","_react","_interopRequireDefault","_propTypes","_reactDraggable","_utils","obj","_extends","source","ownKeys","enumerableOnly","symbols","sym","_assertThisInitialized","_defineProperty","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","slackW","slackH","_proto","lockAspectRatio","aspectRatio","runConstraints","_ref","ratio","_ratio","oldW","oldH","_this$state","resizeHandler","_this2","_ref2","canDragX","canDragY","widthChanged","heightChanged","_this2$runConstraints","newState","persist","renderResizeHandle","resizeHandle","render","_this3","_this$props","resizeHandles","handleSize","excluded","sourceKeys","_objectWithoutPropertiesLoose","_objectSpread","ResizableBox","utils","Responsive","WidthProvider","webpackPolyfill","deprecate","paths","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","_Resizable","propsWidth","propsHeight","getDerivedStateFromProps","getIndentationValue","param","ResponsiveReactGridLayout","generateInitialState","colNo","onWidthChange","newBreakpoint","newCols","newLayouts","onBreakpointChange","lg","md","sm","xs","xxs","ComposedComponent","offsetWidth","onWindowResize","measureBeforeMount","rest"],"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\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { left: number, top: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\ntype FastRGLPropsEqual = (Object, Object, Function) => boolean;\nexport const fastRGLPropsEqual: FastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nexport function fastPositionEqual(a: Position, b: Position) {\n return (\n a.left === b.left &&\n a.top === b.top &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nexport function compactType(\n props: ?{ verticalCompact: boolean, compactType: CompactType }\n): CompactType {\n const { verticalCompact, compactType } = props || {};\n return verticalCompact === false ? null : compactType;\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport type { Position } from \"./utils\";\n\nexport type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};\n\n// Helper for generating column width\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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 {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\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 {Position} Object containing coords.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number\n): { x: number, y: number } {\n const { margin, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number\n): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n}\n","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { fastPositionEqual, perc, setTopLeft, setTransform } from \"./utils\";\nimport { calcGridItemPosition, calcXY, calcWH } from \"./calculateUtils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n let { x, y, w, h } = this.props;\n const oldPosition = calcGridItemPosition(\n this.getPositionParams(this.props),\n x,\n y,\n w,\n h,\n this.state\n );\n ({ x, y, w, h } = nextProps);\n const newPosition = calcGridItemPosition(\n this.getPositionParams(nextProps),\n x,\n y,\n w,\n h,\n nextState\n );\n return (\n !fastPositionEqual(oldPosition, newPosition) ||\n this.props.useCSSTransforms !== nextProps.useCSSTransforms\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const prevDroppingPosition = prevProps.droppingPosition;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevDroppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.left !== prevDroppingPosition.left) ||\n droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n getPositionParams(props: Props = this.props): PositionParams {\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(\n child: ReactElement,\n isDraggable: boolean\n ): ReactElement {\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(\n child: ReactElement,\n position: Position,\n isResizable: boolean\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0)\n .width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const { onDrag, transformScale } = this.props;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n onDrag &&\n onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, y, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = calcWH(\n this.getPositionParams(),\n size.width,\n size.height,\n x,\n y\n );\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = calcGridItemPosition(\n this.getPositionParams(),\n x,\n y,\n w,\n h,\n this.state\n );\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n\n return newChild;\n }\n}\n","// @flow\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nimport type { EventCallback, CompactType, Layout, LayoutItem } from \"./utils\";\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number,\n e: Event\n }) => void,\n children: ReactChildrenArray>\n};\n\nexport default {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n};\n","// @flow\nimport React from \"react\";\n\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n getAllCollisions,\n compactType,\n noop,\n fastRGLPropsEqual\n} from \"./utils\";\n\nimport { calcXY } from \"./calculateUtils\";\n\nimport GridItem from \"./GridItem\";\nimport ReactGridLayoutPropTypes from \"./ReactGridLayoutPropTypes\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nimport type { Props } from \"./ReactGridLayoutPropTypes\";\n\n// End Types\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n // Refactored to another module to make way for preval\n static propTypes = ReactGridLayoutPropTypes;\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n !fastRGLPropsEqual(this.props, nextProps, isEqual) ||\n !isEqual(this.state.activeDrag, nextState.activeDrag)\n );\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n if (!this.state.activeDrag) return;\n\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable =\n typeof l.isDraggable === \"boolean\"\n ? l.isDraggable\n : !l.static && isDraggable;\n const resizable =\n typeof l.isResizable === \"boolean\"\n ? l.isResizable\n : !l.static && isResizable;\n\n return (\n \n {child}\n \n );\n }\n\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (\n isFirefox &&\n e.nativeEvent.target.className.indexOf(layoutClassName) === -1\n ) {\n return false;\n }\n\n const {\n droppingItem,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding\n } = this.props;\n const { layout } = this.state;\n // This is relative to the DOM element that this event fired for.\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { left: layerX, top: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n const positionParams: PositionParams = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n\n const calculatedPosition = calcXY(\n positionParams,\n layerY,\n layerX,\n droppingItem.w,\n droppingItem.h\n );\n\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const { left, top } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({ droppingPosition });\n }\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = (e: Event) => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h, e });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n deltaX /= _this2.props.transformScale;\n deltaY /= _this2.props.transformScale; // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n transformScale: _propTypes.default.number,\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayoutPropTypes\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(prevProps);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(prevProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = this.props;\n const newBreakpoint =\n this.props.breakpoint ||\n getBreakpointFromWidth(this.props.breakpoints, this.props.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n const newLayouts = { ...layouts };\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n prevProps.breakpoints !== breakpoints ||\n prevProps.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts))\n newLayouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n newLayouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n this.props.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n this.props.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n this.props.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {|\n width: number\n|};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 09b08533d..c90a22e24 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-grid-layout", - "version": "0.17.1", + "version": "0.18.0", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { @@ -98,4 +98,4 @@ "pre-commit": "lint-staged && make lint && make test" } } -} +} \ No newline at end of file From 91ebd58abc9eac4fbba0c004233fa349d1ade20d Mon Sep 17 00:00:00 2001 From: Michael Herzner Date: Tue, 25 Feb 2020 15:01:19 +0100 Subject: [PATCH 076/101] Fix flow error due to incorrectly set defaultProps (#1138) --- lib/ResponsiveReactGridLayout.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 6b462a9fb..ac9c1983d 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -141,7 +141,13 @@ export default class ResponsiveReactGridLayout extends React.Component< cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, layouts: {}, margin: [10, 10], - containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null }, + containerPadding: { + lg: [0, 0], + md: [0, 0], + sm: [0, 0], + xs: [0, 0], + xxs: [0, 0] + }, onBreakpointChange: noop, onLayoutChange: noop, onWidthChange: noop From 5e9affa33e291700a77a1b2a7be168c381062971 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 11:25:06 -0500 Subject: [PATCH 077/101] chore(deps): update devDeps --- .flowconfig | 13 +- package.json | 6 +- yarn.lock | 2135 ++++++++++++++++++++++++++------------------------ 3 files changed, 1129 insertions(+), 1025 deletions(-) diff --git a/.flowconfig b/.flowconfig index 7fe1bd498..3a08ec336 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,7 +1,12 @@ [version] -0.115.0 +^0.119.0 [ignore] +/build/.* +/dist/.* +# Speeds parsing: +.*/node_modules/@babel.* +.*/node_modules/babel.* [include] @@ -9,3 +14,9 @@ interfaces/ [options] +emoji=true +module.use_strict=true +suppress_comment=\\(.\\|\n\\)*\\s*\\$FlowFixMe.* +suppress_comment=\\(.\\|\n\\)*\\s*\\$FlowBug.* +suppress_comment=\\(.\\|\n\\)*\\s*\\$FlowIgnore.* +suppress_comment=\\(.\\|\n\\)*\\s*\\$FlowNative.* \ No newline at end of file diff --git a/package.json b/package.json index c90a22e24..24d1128c1 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@babel/preset-react": "^7.8.0", "@babel/register": "^7.8.0", "babel-eslint": "^10.0.3", - "babel-jest": "^24.9.0", + "babel-jest": "^25.1.0", "babel-loader": "^8.0.6", "babel-plugin-preval": "^4.0.0", "css-loader": "^3.4.2", @@ -61,7 +61,7 @@ "eslint-plugin-mocha": "^6.2.2", "eslint-plugin-react": "^7.17.0", "exports-loader": "^0.7.0", - "flow-bin": "^0.115.0", + "flow-bin": "^0.119.0", "husky": "^3.0.9", "imports-loader": "^0.8.0", "jest-cli": "^24.9.0", @@ -98,4 +98,4 @@ "pre-commit": "lint-staged && make lint && make test" } } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index ad33be1aa..a21f71421 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/cli@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.0.tgz#e9ed4c3dbb163de5034c18979c118ed1aa294e05" - integrity sha512-/zOi56gIH3jBmnrfUvVf8MOMqf3hfFou2ONRYdRRpgnBSi0dUkiO+usu44YHsOEJqqwPkijBsiDKscQizouoag== + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" + integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -18,34 +18,34 @@ optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.0.tgz#8c98d4ac29d6f80f28127b1bc50970a72086c5ac" - integrity sha512-AN2IR/wCUYsM+PdErq6Bp3RFTXl8W0p9Nmymm7zkpsCmh+r/YYcckaCGpU8Q/mEKmST19kkGRaG42A/jxOWwBA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - "@babel/highlight" "^7.8.0" + "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.0", "@babel/compat-data@^7.8.1": - version "7.8.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.1.tgz#fc0bbbb7991e4fb2b47e168e60f2cc2c41680be9" - integrity sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw== +"@babel/compat-data@^7.8.4": + version "7.8.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz#d28ce872778c23551cbb9432fc68d28495b613b9" + integrity sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg== dependencies: - browserslist "^4.8.2" + browserslist "^4.8.5" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.0.tgz#fd273d4faf69cc20ee3ccfd32d42df916bb4a15c" - integrity sha512-3rqPi/bv/Xfu2YzHvBz4XqMI1fKVwnhntPA1/fjoECrSjrhbOCxlTrbVu5gUtr8zkxW+RpkDOa/HCW93gzS2Dw== - dependencies: - "@babel/code-frame" "^7.8.0" - "@babel/generator" "^7.8.0" - "@babel/helpers" "^7.8.0" - "@babel/parser" "^7.8.0" - "@babel/template" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" +"@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -55,687 +55,694 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.0.tgz#40a1244677be58ffdc5cd01e22634cd1d5b29edf" - integrity sha512-2Lp2e02CV2C7j/H4n4D9YvsvdhPVVg9GDIamr6Tu4tU35mL3mzOrzl1lZ8ZJtysfZXh+y+AGORc2rPS7yHxBUg== +"@babel/generator@^7.4.0", "@babel/generator@^7.8.3", "@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.0.tgz#334ae2cb801e2381509631a5caa1ac6ab1c5016a" - integrity sha512-WWj+1amBdowU2g18p3/KUc1Y5kWnaNm1paohq2tT4/RreeMNssYkv6ul9wkE2iIqjwLBwNMZGH4pTGlMSUqMMg== +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.0.tgz#c2237beb110f64f592dddcabef1098e9d766ef88" - integrity sha512-KbBloNiBHM3ZyHg1ViDRs4QcnAunwMJ+rLpAEA8l3cWb3Z1xof7ag1iHvX16EwhUfaTG3+YSvTRPv4xHIrseUQ== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.0.tgz#4b9111eb862f5fd8840c37d200610fa95ab0aad8" - integrity sha512-Zg7VLtZzcAHoQ13S0pEIGKo8OAG3s5kjsk/4keGmUeNuc810T9fVp6izIaL8ZVeAErRFWJdvqFItY3QMTHMsSg== +"@babel/helper-builder-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" + integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.0.tgz#1cd725c5444be0ce59dbfa47b6ac5e9772168c67" - integrity sha512-Vi8K1LScr8ZgLicfuCNSE7JWUPG/H/9Bw9zn+3vQyy4vA54FEGTCuUTOXCFwmBM93OD6jHfjrQ6ZnivM5U+bHg== +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== dependencies: - "@babel/helper-hoist-variables" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-compilation-targets@^7.8.0": - version "7.8.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.1.tgz#309da97e93e6ca74896393d0c8da7af39cb4cea8" - integrity sha512-Fsrljg8DHSdnKSzC0YFopX7lseRpVfWMYuC1Dnvf7tw972E2KDjZ4XEaqjO9aJL0sLcG4KNRXxowDxHYIcZ+Cw== +"@babel/helper-compilation-targets@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" + integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== dependencies: - "@babel/compat-data" "^7.8.1" - browserslist "^4.8.2" + "@babel/compat-data" "^7.8.4" + browserslist "^4.8.5" invariant "^2.2.4" - levenary "^1.1.0" + levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.0.tgz#b3ddf557ed4656e0d296c3b0f3fcd381ea8de72c" - integrity sha512-ctCvqYBTlwEl2uF4hCxE0cd/sSw71Zfag0jKa39y4HDLh0BQ4PVBX1384Ye8GqrEZ69xgLp9fwPbv3GgIDDF2Q== +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" + integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== dependencies: - "@babel/helper-function-name" "^7.8.0" - "@babel/helper-member-expression-to-functions" "^7.8.0" - "@babel/helper-optimise-call-expression" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-replace-supers" "^7.8.0" - "@babel/helper-split-export-declaration" "^7.8.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-create-regexp-features-plugin@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.0.tgz#ae551572b840189a7b94e39eddc1a68d355974eb" - integrity sha512-vJj2hPbxxLUWJEV86iZiac5curAnC3ZVc+rFmFeWZigUOcuCPpbF+KxoEmxrkmuCGylHFF9t4lkpcDUcxnhQ5g== +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" + integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== dependencies: - "@babel/helper-regex" "^7.8.0" + "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" -"@babel/helper-define-map@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.0.tgz#d3180691fa189fc147d411deaa029305c1470dfe" - integrity sha512-Go06lUlZ4YImNEmdyAH5iO38yh5mbpOPSwA2PtV1vyczFhTZfX0OtzkiIL2pACo6AOYf89pLh42nhhDrqgzC3A== +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== dependencies: - "@babel/helper-function-name" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.0.tgz#a2ded9298a5dc9df0a8ec65ac12e4745f9af2882" - integrity sha512-w4mRQqKAh4M7BSLwvDMm8jYFroEzpqMCtXDhFHP+kNjMIQWpbC6b0Q/RUQsJNSf54rIx6XMdci1Stf60DWw+og== +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== dependencies: - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.0.tgz#dde5cf0d6b15c21817a67dd66fe7350348e023bf" - integrity sha512-x9psucuU0Xalw+0Vpr2FYJMLB7/KnPSLZhlkUyOGbYAWRDfmtZBrguYpJYiaNCRV7vGkYjO/gF6/J6yMvdWTDw== +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== dependencies: - "@babel/helper-get-function-arity" "^7.8.0" - "@babel/template" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.0.tgz#90977f61d76d2225d1ae0208def7df22ea92792e" - integrity sha512-eUP5grliToMapQiTaYS2AAO/WwaCG7cuJztR1v/a1aPzUzUeGt+AaI9OvLATc/AfFkF8SLJ10d5ugGt/AQ9d6w== +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.0.tgz#693586b56487e60fff9d9c7074f4a86e1a8af348" - integrity sha512-jDl66KvuklTXUADcoXDMur1jDtAZUZZkzLIaQ54+z38ih8C0V0hC56hMaoVoyoxN60MwQmmrHctBwcLqP0c/Lw== +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-member-expression-to-functions@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.0.tgz#50d0ed445d2da11beb60e2dbc2c428254bd5a4ae" - integrity sha512-0m1QabGrdXuoxX/g+KOAGndoHwskC70WweqHRQyCsaO67KOEELYh4ECcGw6ZGKjDKa5Y7SW4Qbhw6ly4Fah/jQ== +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.0.tgz#076edda55d8cd39c099981b785ce53f4303b967e" - integrity sha512-ylY9J6ZxEcjmJaJ4P6aVs/fZdrZVctCGnxxfYXwCnSMapqd544zT8lWK2qI/vBPjE5gS0o2jILnH+AkpsPauEQ== +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.0.tgz#a3cbe4ac91b101c4b6db278af0c868fe7091ebae" - integrity sha512-fvGhX4FY7YwRdWW/zfddNaKpYl8TaA8hvwONIYhv1/a1ZbgxbTrjsmH6IGWUgUNki7QzbpZ27OEh88sZdft3YA== +"@babel/helper-module-transforms@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" + integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== dependencies: - "@babel/helper-module-imports" "^7.8.0" - "@babel/helper-simple-access" "^7.8.0" - "@babel/helper-split-export-declaration" "^7.8.0" - "@babel/template" "^7.8.0" - "@babel/types" "^7.8.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.0.tgz#3df62773cf210db9ed34c2bb39fece5acd1e1733" - integrity sha512-aiJt1m+K57y0n10fTw+QXcCXzmpkG+o+NoQmAZqlZPstkTE0PZT+Z27QSd/6Gf00nuXJQO4NiJ0/YagSW5kC2A== +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== dependencies: - "@babel/types" "^7.8.0" + "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.0.tgz#59ec882d43c21c544ccb51decaecb306b34a8231" - integrity sha512-+hAlRGdf8fHQAyNnDBqTHQhwdLURLdrCROoWaEQYiQhk2sV9Rhs+GoFZZfMJExTq9HG8o2NX3uN2G90bFtmFdA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.0.tgz#dde1d2d2070e292c19a8702075e945923aa1678b" - integrity sha512-haD8fRsPtyFZkbtxBIaGBBHRtbn0YsyecdYrxNgO0Bl6SlGokJPQX9M2tDuVbeQBYHZVLUPMSwGQn4obHevsMQ== +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.0.tgz#034c21154dd12472717cfb31faf1713426fbc435" - integrity sha512-+aKyBd4oHAaIZgOLq/uLjkUz7ExZ0ppdNBc8Qr72BmtKNAy3A6EJa/ifjj0//CIzQtUDPs3E6HjKM2cV6bnXsQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.0" - "@babel/helper-wrap-function" "^7.8.0" - "@babel/template" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/helper-replace-supers@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.0.tgz#d83cb117edb820eebe9ae6c970a8ad5eac09d19f" - integrity sha512-R2CyorW4tcO3YzdkClLpt6MS84G+tPkOi0MmiCn1bvYVnmDpdl9R15XOi3NQW2mhOAEeBnuQ4g1Bh7pT2sX8fg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.0" - "@babel/helper-optimise-call-expression" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/helper-simple-access@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.0.tgz#a5095ab031f759995134183fa7719aa85f0ec962" - integrity sha512-I+7yKZJnxp7VIC2UFzXfVjLiJuU16rYFF59x27c+boINkO/pLETgZcoesCryg9jmU4jxEa0foFueW+2wjc9Gsw== - dependencies: - "@babel/template" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/helper-split-export-declaration@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.0.tgz#ed10cb03b07454c0d40735fad4e9c9711e739588" - integrity sha512-YhYFhH4T6DlbT6CPtVgLfC1Jp2gbCawU/ml7WJvUpBg01bCrXSzTYMZZXbbIGjq/kHmK8YUATxTppcRGzj31pA== - dependencies: - "@babel/types" "^7.8.0" - -"@babel/helper-wrap-function@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.0.tgz#a26751c7b0be765a0db10162c6de485402cb505c" - integrity sha512-2j6idN2jt8Y+8nJ4UPN/6AZa53DAkcETMVmroJQh50qZc59PuQKVjgOIIqmrLoQf6Ia9bs90MHRcID1OW5tfag== - dependencies: - "@babel/helper-function-name" "^7.8.0" - "@babel/template" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/helpers@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.0.tgz#3d3e6e08febf5edbbf63b1cf64395525aa3ece37" - integrity sha512-srWKpjAFbiut5JoCReZJ098hLqoZ9HufOnKZPggc7j74XaPuQ+9b3RYPV1M/HfjL63lCNd8uI1O487qIWxAFNA== - dependencies: - "@babel/template" "^7.8.0" - "@babel/traverse" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/highlight@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.0.tgz#4cc003dc10359919e2e3a1d9459150942913dd1a" - integrity sha512-OsdTJbHlPtIk2mmtwXItYrdmalJ8T0zpVzNAbKSkHshuywj7zb29Y09McV/jQsQunc/nEyHiPV2oy9llYMLqxw== +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" + integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.0.tgz#54682775f1fb25dd29a93a02315aab29a6a292bb" - integrity sha512-VVtsnUYbd1+2A2vOVhm4P2qNXQE8L/W859GpUHfUcdhX8d3pEKThZuIr6fztocWx9HbK+00/CR0tXnhAggJ4CA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== -"@babel/plugin-proposal-async-generator-functions@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.0.tgz#92520961d1b2220f0f2e6b576b7896698cd747f9" - integrity sha512-8vIQf8JYced7gCeKDsGETNGKE+zdD/JmP1LBlRn+w3UXc1aSpZv2Y330bB/fnOEbUgPbuFv+IEi+gopg+Fu0kQ== +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-remap-async-to-generator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-class-properties@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.0.tgz#bb3325d9166c80db8f2e15fc0bb6d61d7300e373" - integrity sha512-eVGj5NauhKCwABQjKIYncMQh9HtFsBrIcdsxImbTdUIaGnjymsVsBGmDQaDuPL/WCjYn6vPL4d+yvI6zy+VkrQ== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-dynamic-import@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.0.tgz#bbd7c00f351b55f02aec0fe9b9c42ad3f659b176" - integrity sha512-YzMq0AqeTR4Mh2pz3GrCWqhcEV38HgUMMR/56/YR5GPc4Y2p1KJ4Le6j92vMnW8TJqVj+qJz/KDNglpMeww9Yg== +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.0.tgz#99fd838398c32f4d96117770f7f3591062e72607" - integrity sha512-pSpuhwn926vtNeUH2FHx1OzIXaUMgklG0MzlFZJVEg37fB904gOxN572NgBae+KDwFyZDpkLMyEkVA011lBJrQ== +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.0.tgz#1ef61239ed2241746bc4936fc643a5c6f1cb24fa" - integrity sha512-cQMI+RQdcK2IyMm13NKKFCYfOSBUtFxEeRBOdFCi2Pubv/CpkrCubc/ikdeKMT6Lu+uQ+lNSDEJvDCOQZkUy0g== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.0.tgz#ca8ac673d32db774c2154a4c7517fd46ec45e9cf" - integrity sha512-SjJ2ZXCylpWC+5DTES0/pbpNmw/FnjU/3dF068xF0DU9aN+oOKah+3MCSFcb4pnZ9IwmxfOy4KnbGJSQR+hAZA== +"@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.0.tgz#6a7dee0bfd72751e3f1386ba4da03e6fa82fcd95" - integrity sha512-tHP3eez6TrpPJYttBZ/6uItRbIuXUIDpQ9xwvzKwR+RboWGMJ7WzFC5dDJ3vjLuCx0/DG1tM0MVkmgcBybth9w== +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.0.tgz#d05e4fa3c1e4ef18eaea6bc92a4b06f95eaf1df5" - integrity sha512-PNBHxPHE91m+LLOdGwlvyGicWfrMgiVwng5WdB3CMjd61+vn3vPw0GbgECIAUCZnyi7Jqs5htUIZRztGuV8/5g== +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.0.tgz#9e1c0481863485052bae8ac024fca7028e24ee31" - integrity sha512-3oK0Qt5w4arb+es3rWBribDbtc0TYJP7dFZ1dXcYul3cXderqfIOoSx9YUC1oD208nJwJO/++fvrgLmkYSbe8A== +"@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.0.tgz#e6c3dba5a61ecf72ba00a3f3f5f1234989a58e6a" - integrity sha512-a8w8k7pK8nYhem07rXdAq03T+DlTX8LFojUptrh9JEx80AgLqGiuoFIyQOGTWif39kFnDOQqbzl1s6KQqrfV+A== + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.0.tgz#3a6c1cd36af923db602df83c5aa72e08bb14353a" - integrity sha512-Mx2RzpCHJaBfmFdA2abXDKRHVJdzJ6R0Wqwb6TxCgM7NRR5wcC4cyiAsRL7Ga+lwG8GG1cKvb+4ENjic8y15jA== +"@babel/plugin-syntax-bigint@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-flow@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.0.tgz#e5f92b4e21e4c8f7eb25b75f312b427799693bae" - integrity sha512-MDK9WdjDccrxzz+4sthpSDnqdf5McJwTtfBYGitOweC/j0Zg6e8wHmP4RGLTeyGYe/IySoRgKC5hvSm6ddrNRw== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.0.tgz#7f798eb7e8cfd3821388120679d23d530bae6e53" - integrity sha512-LPykaAbH86L5NnDfCRSpNxtEHZk+6GaFzXfWEFU/6R4v69EXQr6GOp7hwH+Uw0QlYVN++s6TukTJ3flFcspahA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.0.tgz#657a0306e2c74de84e0dcf8b6cb024ed990224fc" - integrity sha512-zLDUckAuKeOtxJhfNE0TlR7iEApb2u7EYRlh5cxKzq6A5VzUbYEdyJGJlug41jDbjRbHTtsLKZUnUcy/8V3xZw== +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.0.tgz#5d8f24ecffa4ae74164e53264953c5ea8ba6d149" - integrity sha512-Rv2hnBToN6rbA9hO2a4vtwXZLzNa+TWkoSIMMvUezFz5+D9NPeX7SFrArwtFzzbwndmWiqboTr5rNpzAz0MPpA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.0.tgz#9b37d580d459682364d8602494c69145b394fd4c" - integrity sha512-dt89fDlkfkTrQcy5KavMQPyF2A6tR0kYp8HAnIoQv5hO34iAUffHghP/hMGd7Gf/+uYTmLQO0ar7peX1SUWyIA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.0.tgz#180c7bdd6b7fd81cc6d18269de12d5ddd60cabce" - integrity sha512-EIgJVy+u1RvR2gJfX4ReLwAupO/twllUue1wPrRxhu18+eC3bGTEcOSXLQdaE9ya9NG1rE0eQs0GSiloUGFEwg== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.0.tgz#c40f4d4d6a4f5e71d2bfd949b0a7f1e1e6792fe0" - integrity sha512-LV1c+TTAO8Vawe3t+WXBHYWbS7endP8MSlqKPKEZOyWPEJX2akl3jfvFG828/OE7RpyoC3JXfLJDFj/jN7A8hg== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.0.tgz#8d45e3d68a1e26bce79c51b08dd9126290686207" - integrity sha512-iXR/Cw32fMfWlD1sK2zD/nXtuLStkalRv+xee6VrX84CFrn2LKwb/EOs/4UaDNUpUsws8YZYKeQjPagacFquug== +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-arrow-functions@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.0.tgz#d98b7c425fed35f70cb85024a2b10008936631b3" - integrity sha512-9KfteDp9d8cF388dxFMOh3Dum41qpOVUPVjQhXGd1kPyQBE05FJgYndiAriML2yhMIbZ2bjgweh2nnvBXDH2MQ== +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.0.tgz#6561fb6445d89bc20b72150430944cad0e501e4a" - integrity sha512-9dvBvJnEdsDWYMrykoMyLNVRPGoub6SFlARtsYgSQ1riTjnyBjhctihSME4XsSku86F59PDeFpC9PCU+9I154w== +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-module-imports" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-remap-async-to-generator" "^7.8.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.0.tgz#2ea8a33ec78825ce91244980389cb96d4c6dc6bd" - integrity sha512-bim6gUfHq2kPN+aQst33ZEMeglpaUXAo6PWTZvOA8BOnWpNKgZcUzBvpZhh2ofL6YhZgzGoRwVVfzwynDEf47g== +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoping@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.0.tgz#f6a81bc8c76dbbd202b718cb9e681a27f1d0af8f" - integrity sha512-FKTK4hzg7W950Yu9iqMl12WBixCmusMc5HBt3/ErvpFLnvr3/6mu/EBTZoCEJ0mw/lQUDfU01vTcZY9oEahlMg== +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.0.tgz#eb4699613b3ea3ccaf095bb0447dac55f7454fc9" - integrity sha512-18RLDwKtGXCLLbf5V03GojebPH7dKYCmIBqQGhgfZDoYsyEzR9kMZ6IxlJP72K5ROC9ADa4KPI6ywuh7NfQOgQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.0" - "@babel/helper-define-map" "^7.8.0" - "@babel/helper-function-name" "^7.8.0" - "@babel/helper-optimise-call-expression" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-replace-supers" "^7.8.0" - "@babel/helper-split-export-declaration" "^7.8.0" +"@babel/plugin-transform-classes@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" + integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.0.tgz#c86c200ea42cbecda754fdf636a04dfbf6371cc7" - integrity sha512-FaODHuQRdnWFVwxLPlTN85Lk/aitfvQBHTXahf58FnatCynfhkeNUO8ID+AqAxY4IJsZjeH6OnKDzcGfgKJcVw== +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.0.tgz#579d09e8dabf825cc3ac1524414ff99669f0abf9" - integrity sha512-D+69HT//cE86aBTLULzSBFLC5A7HcPQzJPiny6P4SLHkDF750MylRKO3iWvdgvb+OSp5dOrOxwXajvaxk1ZfYA== +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.0.tgz#7e9e439e85219be091c5dbf1be138320600d1172" - integrity sha512-pq/XLkDB4MPvTe9ktHJInfWksalXogrIGRZJUG7RiDXhEfdNrlducoMPbACZQuCFtelVgVpD0VyreiY0l38G7g== +"@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.0.tgz#913b3fdb5cbd35e3208b017dac5ef335ef6b0d65" - integrity sha512-REtYWvpP4TDw4oVeP01vQJcAeewjgk8/i7tPFP11vUjvarUGGyxJLeq79WEnIdnKPQJirZaoDRT4kEWEdSWkDw== +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.0.tgz#72ddf89e1acfac75482992b8976df62f8ad813c4" - integrity sha512-vaDgF3gPLzVcoe3UZqnra6FA7O797sZc+UCHPd9eQTI34cPtpCA270LzopIXS3Fhc3UmFrijLmre9mHTmUKVgg== +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-flow-comments@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.8.0.tgz#497ee9443794eeccc3522998e6a4a6d611031f6c" - integrity sha512-lcGmxUe2y0bTMWH6v25cYe1lbqXRc/W8pqYBQUfNWbe5tb6qOjwXwQ43pUhfjyuaioKzgHH2UzFxchDVPnUhmQ== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.8.3.tgz#0a7e6c49224ac24271e4da25774da0600605ef2c" + integrity sha512-SEmbGPsaUig0x3QkB/Nai3Snk1sRxODBN2EGjdQqgBb5TMcbEejV2TtMGi2XiLmw9Cy/BvJX7CAnfJMctuyglg== dependencies: - "@babel/generator" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-flow" "^7.8.0" + "@babel/generator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.0.tgz#d35294e7be31f2063f6e3a5ec6146c28efb50db1" - integrity sha512-yKcww1yWfAHWk4R7OeU0YnrWEIrSodFr1TibfkrP8t0RDXSyGIDnahz8lzXagNT/XlZC3sWpsYXhty9xAU3ULQ== +"@babel/plugin-transform-flow-strip-types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" + integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-flow" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.0.tgz#4a2960b76d42f4cc8a821edb66f4a7eadf6042ce" - integrity sha512-9j9g0qViCAo8E5qCBSaQdghymn7A9bRXSfS9jU7oLpYccYFZg9A+1KO8X+HV7fhJYH6mZ+e7MRg4p3sLo+RG6Q== +"@babel/plugin-transform-for-of@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" + integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.0.tgz#9c5fdb20967f151c0e06419621d56d63120653c9" - integrity sha512-YL8Ol54UKeIyY1uUGfry+B9ppXAB3aVBB1gG9gxqhg/OBCPpV2QUNswmjvfmyXEdaWv8qODssBgX7on792h44w== +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-function-name" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.0.tgz#bda7a4773293ee9b687174eb4e1f91fe37ed576f" - integrity sha512-7UDPKG+uVltsZt98Hw+rMbLg772r8fQC6YJ2fNDckcpAXgIWqQbMCmCpfYo0hBNhdhqocM73auk4P/zziQshQw== +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.0.tgz#da3e170e99c2fd1110785cc6146aa2f45429f664" - integrity sha512-lJSdaWR56wmrosCiyqKFRVnLrFYoVAk2mtZAyegt7akeJky/gguv0Rukx9GV3XwHGuM1ZPE06cZMjNlcLp8LrQ== +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.0.tgz#09f4fb47a2a7d4471866afeb446bc9a068a091b0" - integrity sha512-mFr1O3TaDL4XozM3AzNPz9AsxzzjTxwn4aOShYP5TlO+4rufvjagV2KKDTPMZTQm1ZA/C/PxJDsDekEnnUGz5A== +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== dependencies: - "@babel/helper-module-transforms" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.0.tgz#69c682a41905f8885ffb9c37ab34ad1fe8ec3fd7" - integrity sha512-w2g8tmL7NgBYt6alc8YawMcmPiYqnVvvI0kLB++VOUOssqdJMAkfQOMGV+2M8H5uhJYDaAghAVMUYps3s+jMrw== +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== dependencies: - "@babel/helper-module-transforms" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-simple-access" "^7.8.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.0.tgz#b0ff0106a7f8a465a75ce5167c88b648770b0a0c" - integrity sha512-tKF9KLiIsiKyWTVU0yo+NcNAylGn7euggYwXw63/tMxGtDTPsB9Y7Ecqv4EoXEwtoJOJ0Lewf17oaWQtindxIA== +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== dependencies: - "@babel/helper-hoist-variables" "^7.8.0" - "@babel/helper-module-transforms" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.0.tgz#edc1a7a587a31a185070421f97ae3798b15df9b7" - integrity sha512-lAwNfXwmfTy7fl2XOyoVpMXnLkJANgH0vdSYNFcS4RuJPBtHfunGA+Y0L7wsHmfPzyVYt8sUglLjaWtdZMNJNg== +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== dependencies: - "@babel/helper-module-transforms" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.0.tgz#718e168e7f5ab83fa7e4dfd0cf1831804fc016f0" - integrity sha512-kq1rxQ1HviCP13SMGZ4WjBBpdogTGK7yn/g/+p+g1AQledgHOWKVeMY1DwKYGlGJ/grDGTOqpJLF1v3Sb7ghKA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-new-target@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.0.tgz#54d126788abc648cab27bc9b74a8306b4158f70f" - integrity sha512-hH1Afz9Xy/wkcxhoI0vYw48kTBJqYUhMmhp3SLI1p817iByM6ItH4LS8tZatDAIKmAQAXj8d3Ups1BgVJECDrA== +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.0.tgz#aa35d295dd62b84bbea2e155e0b3a2017eb2f4e8" - integrity sha512-2DYqQ811nRlFVlni6iqfxBVVGqkBgfvEv/lcvmdNu2CaG+EA7zSP1hqYUsqamR+uCdDbsrV7uY6/0rkXbJo5YQ== +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-replace-supers" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.0.tgz#edc1531beed51fb8a49e0a3f11ca6b508d083d6f" - integrity sha512-9R2yykk7H92rntETO0fq52vJ4OFaTcDA49K9s8bQPyoD4o3/SkWEklukArCsQC6fowEuraPkH/umopr9uO539g== +"@babel/plugin-transform-parameters@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" + integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== dependencies: - "@babel/helper-call-delegate" "^7.8.0" - "@babel/helper-get-function-arity" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.0.tgz#af7538d916935ece100e72123fce109182c01ac3" - integrity sha512-vjZaQlojnZIahu5ofEW+hPJfDI5A6r2Sbi5C0RuCaAOFj7viDIR5kOR7ul3Fz5US8V1sVk5Zd2yuPaz7iBeysg== +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.0.tgz#4aa02b070a83bb12033f483bf65ab2444ba1832a" - integrity sha512-oozdOhU2hZ6Tb9LS9BceGqDSmiUrlZX8lmRqnxQuiGzqWlhflIRQ1oFBHdV+hv+Zi9e5BhRkfSYtMLRLEkuOVA== +"@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.0.tgz#bd067b0ca21cf33eac80b7dfddf8699f1d13a943" - integrity sha512-hJXfJdLDDlJoxW/rAjkuIpGUUTizQ6fN9tIciW1M8KIqFsmpEf9psBPNTXYRCOLYLEsra+/WgVq+sc+1z05nQw== +"@babel/plugin-transform-react-jsx-self@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" + integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-jsx" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-source@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.0.tgz#97681728c12d770449d1c3657621afe974645e59" - integrity sha512-W+0VXOhMRdUTL7brjKXND+BiXbsxczfMdZongQ/Jtti0JVMtcTxWo66NMxNNtbPYvbc4aUXmgjl3eMms41sYtg== +"@babel/plugin-transform-react-jsx-source@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz#951e75a8af47f9f120db731be095d2b2c34920e0" + integrity sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-jsx" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.0.tgz#5676f2a13befc16fa2a78bc557e02ff150c02a28" - integrity sha512-r5DgP2ZblaGmW/azRS9rlaf3oY4r/ByXRDA5Lcr3iHUkx3cCfL9RM10gU7AQmzwKymoq8LZ55sHyq9VeQFHwyQ== +"@babel/plugin-transform-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" + integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== dependencies: - "@babel/helper-builder-react-jsx" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-jsx" "^7.8.0" + "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.0.tgz#4a0a40af2f7d60a54a3fd7ce58f06b12ab14eaf9" - integrity sha512-n88GT8PZuOHWxqxCJORW3g1QaYzQhHu5sEslxYeQkHVoewfnfuWN37t7YGaRLaNUdaZUlRPXhDcLGT7zBa/u0g== +"@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-reserved-words@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.0.tgz#572f21e11b9271e67cc5695890b8d5e58186f51e" - integrity sha512-DnshRyDTXZhmAgO2c1QKZI4CfZjoP2t3fSwRsnbCP9P/FSBpf9I7ovnAELswklw5OeY+/D/JIiaGLoUt2II3LA== +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-shorthand-properties@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.0.tgz#38b43048e633878f82a3ef1353868c12015ac838" - integrity sha512-sExhzq63Gl2PMbl7ETpN7Z1A38rLD6GeCT6EEEIIKjTVt9u6dRqJ6nHhaquL7QgR3egj/8fcvq23UvzfPqGAYA== +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-spread@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.0.tgz#939e17585b1f24535fdeafc5e11a439520f4b3ab" - integrity sha512-6Zjl0pv6x10YmFVRI0VhwJ/rE++geVHNJ9xwd+UIt3ON2VMRO7qI2lPsyLnzidR5HYNd/JXj47kdU9Rrn4YcnQ== +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.0.tgz#98f634d133f7be471e1e6ccc613c6a95e7e9f1f5" - integrity sha512-uksok0Bqox8YeIRFhr6RRtlBXeGpN1ogiEVjEd7A7rVLPZBXKGbL7kODpE7MQ+avjDLv5EEKtDCeYuWZK7FF7g== +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/helper-regex" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.0.tgz#2e19e890cc5b0d58643ee6986840e928d707f7ef" - integrity sha512-EF7Q7LEgeMpogHcvmHMNXBWdLWG1tpA1ErXH3i8zTu3+UEKo6aBn+FldPAJ16UbbbOwSCUCiDP6oZxvVRPhwnQ== +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.0.tgz#a8d0dd317349d3dcbb9d659808099c94486554a5" - integrity sha512-rEUBEFzsA9mCS2r7EtXFlM/6GqtzgLdC4WVYM9fIgJX+HcSJ8oMmj8LinfKhbo0ipRauvUM2teE2iNDNqDwO1g== +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-unicode-regex@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.0.tgz#20988246a9d98271f861be422e5a17898b80e5b0" - integrity sha512-qDg8wsnE47B/Sj8ZtOndPHrGBxJMssZJ71SzXrItum9n++iVFN7kYuJO+OHhjom7+/or0zzYqvJNzCkUjyNKqg== +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/preset-env@^7.8.2": - version "7.8.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.2.tgz#dd55bd61f5d0bb1237915173c0e94aa350de3089" - integrity sha512-AF2YUl2bGsLWTtFL68upTTB7nDo05aEcKjHmXJE+aXRvsx5K+9yRsHQP3MjnTrLOWe/eFyUr93dfILROsKC4eg== - dependencies: - "@babel/compat-data" "^7.8.0" - "@babel/helper-compilation-targets" "^7.8.0" - "@babel/helper-module-imports" "^7.8.0" - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-proposal-async-generator-functions" "^7.8.0" - "@babel/plugin-proposal-dynamic-import" "^7.8.0" - "@babel/plugin-proposal-json-strings" "^7.8.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-proposal-object-rest-spread" "^7.8.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.0" - "@babel/plugin-proposal-optional-chaining" "^7.8.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.0" + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" + integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== + dependencies: + "@babel/compat-data" "^7.8.4" + "@babel/helper-compilation-targets" "^7.8.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" @@ -743,68 +750,68 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.0" - "@babel/plugin-transform-arrow-functions" "^7.8.0" - "@babel/plugin-transform-async-to-generator" "^7.8.0" - "@babel/plugin-transform-block-scoped-functions" "^7.8.0" - "@babel/plugin-transform-block-scoping" "^7.8.0" - "@babel/plugin-transform-classes" "^7.8.0" - "@babel/plugin-transform-computed-properties" "^7.8.0" - "@babel/plugin-transform-destructuring" "^7.8.0" - "@babel/plugin-transform-dotall-regex" "^7.8.0" - "@babel/plugin-transform-duplicate-keys" "^7.8.0" - "@babel/plugin-transform-exponentiation-operator" "^7.8.0" - "@babel/plugin-transform-for-of" "^7.8.0" - "@babel/plugin-transform-function-name" "^7.8.0" - "@babel/plugin-transform-literals" "^7.8.0" - "@babel/plugin-transform-member-expression-literals" "^7.8.0" - "@babel/plugin-transform-modules-amd" "^7.8.0" - "@babel/plugin-transform-modules-commonjs" "^7.8.0" - "@babel/plugin-transform-modules-systemjs" "^7.8.0" - "@babel/plugin-transform-modules-umd" "^7.8.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.0" - "@babel/plugin-transform-new-target" "^7.8.0" - "@babel/plugin-transform-object-super" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.8.0" - "@babel/plugin-transform-property-literals" "^7.8.0" - "@babel/plugin-transform-regenerator" "^7.8.0" - "@babel/plugin-transform-reserved-words" "^7.8.0" - "@babel/plugin-transform-shorthand-properties" "^7.8.0" - "@babel/plugin-transform-spread" "^7.8.0" - "@babel/plugin-transform-sticky-regex" "^7.8.0" - "@babel/plugin-transform-template-literals" "^7.8.0" - "@babel/plugin-transform-typeof-symbol" "^7.8.0" - "@babel/plugin-transform-unicode-regex" "^7.8.0" - "@babel/types" "^7.8.0" - browserslist "^4.8.2" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.5" core-js-compat "^3.6.2" invariant "^2.2.2" - levenary "^1.1.0" + levenary "^1.1.1" semver "^5.5.0" "@babel/preset-flow@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.8.0.tgz#c4df512f5b7e20ae56cba33e1ac6dc8980d5b923" - integrity sha512-z10t7ggJjoqdvcOrnXA16PeDhykL+FeJHg8nYg3D+QuKyMyI433o8oNJO+jFrfLa1aQ9ps2eG2QA5I7FWlJlOA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.8.3.tgz#52af74c6a4e80d889bd9436e8e278d0fecac6e18" + integrity sha512-iCXFk+T4demnq+dNLLvlGOgvYF6sPZ/hS1EmswugOqh1Ysp2vuiqJzpgsnp5rW8+6dLJT/0CXDzye28ZH6BAfQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-transform-flow-strip-types" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-flow-strip-types" "^7.8.3" "@babel/preset-react@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.0.tgz#fe3bdecfc94e9b4eb3aa2751cfb284e739e810be" - integrity sha512-GP9t18RjtH67ea3DA2k71VqtMnTOupYJx34Z+KUEBRoRxvdETaucmtMWH5uoGHWzAD4qxbuV5ckxpewm39NXkA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-transform-react-display-name" "^7.8.0" - "@babel/plugin-transform-react-jsx" "^7.8.0" - "@babel/plugin-transform-react-jsx-self" "^7.8.0" - "@babel/plugin-transform-react-jsx-source" "^7.8.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" "@babel/register@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.0.tgz#a6515b7daab31209c584f2919702b1dcb6264105" - integrity sha512-i7CPQBzb/uALrZZozm6jXpSoieZvcTSOqonKA9UX4OLEvAYc4Y2VqgW67ZkSz6xfaNP6m1g1oBy0/zMA7YcdJA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.3.tgz#5d5d30cfcc918437535d724b8ac1e4a60c5db1f8" + integrity sha512-t7UqebaWwo9nXWClIPLPloa5pN33A2leVs8Hf0e9g9YwUP8/H9NeR7DJU+4CXo23QtjChQv5a3DjEtT83ih1rg== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.13" @@ -813,53 +820,68 @@ source-map-support "^0.5.16" "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.0.tgz#8c81711517c56b3d00c6de706b0fb13dc3531549" - integrity sha512-Z7ti+HB0puCcLmFE3x90kzaVgbx6TRrYIReaygW6EkBEnJh1ajS4/inhF7CypzWeDV3NFl1AfWj0eMtdihojxw== + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.4.0", "@babel/template@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.0.tgz#a32f57ad3be89c0fa69ae87b53b4826844dc6330" - integrity sha512-0NNMDsY2t3ltAVVK1WHNiaePo3tXPUeJpCX4I3xSKFoEl852wJHG8mrgHVADf8Lz1y+8al9cF7cSSfzSnFSYiw== - dependencies: - "@babel/code-frame" "^7.8.0" - "@babel/parser" "^7.8.0" - "@babel/types" "^7.8.0" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.0.tgz#d85266fdcff553c10e57b672604b36383a127c1f" - integrity sha512-d/6sPXFLGlJHZO/zWDtgFaKyalCOHLedzxpVJn6el1cw+f2TZa7xZEszeXdOw6EUemqRFBAn106BWBvtSck9Qw== - dependencies: - "@babel/code-frame" "^7.8.0" - "@babel/generator" "^7.8.0" - "@babel/helper-function-name" "^7.8.0" - "@babel/helper-split-export-declaration" "^7.8.0" - "@babel/parser" "^7.8.0" - "@babel/types" "^7.8.0" +"@babel/template@^7.4.0", "@babel/template@^7.7.4", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.0.tgz#1a2039a028057a2c888b668d94c98e61ea906e7f" - integrity sha512-1RF84ehyx9HH09dMMwGWl3UTWlVoCPtqqJPjGuC4JzMe1ZIVDJ2DT8mv3cPv/A7veLD6sgR7vi95lJqm+ZayIg== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== dependencies: esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" "@cnakazawa/watch@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" - integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: exec-sh "^0.3.2" minimist "^1.2.0" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + "@jest/console@^24.7.1", "@jest/console@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" @@ -999,6 +1021,28 @@ source-map "^0.6.1" write-file-atomic "2.4.1" +"@jest/transform@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da" + integrity sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^25.1.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.3" + jest-haste-map "^25.1.0" + jest-regex-util "^25.1.0" + jest-util "^25.1.0" + micromatch "^4.0.2" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" @@ -1008,6 +1052,16 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@jest/types@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" + integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -1037,9 +1091,9 @@ any-observable "^0.3.0" "@types/babel__core@^7.1.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" - integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + version "7.1.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.5.tgz#e4d84704b4df868b3ad538365a13da2fa6dbc023" + integrity sha512-+ckxwNj892FWgvwrUWLOghQ2JDgOgeqTPwrcl+0t1pG59CP8qMJ6S/efmEd999vCFSJKOpyMakvU+w380rduUQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1063,12 +1117,17 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" - integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== dependencies: "@babel/types" "^7.3.0" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1089,9 +1148,9 @@ integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" @@ -1109,9 +1168,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "13.1.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.6.tgz#076028d0b0400be8105b89a0a55550c86684ffec" - integrity sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg== + version "13.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.4.tgz#76c3cb3a12909510f52e5dc04a6298cdf9504ffd" + integrity sha512-oVeL12C6gQS/GAExndigSaLxTrKpQPxewx9bOcwfvJiJge4rr7wNaph4J+ns5hrmIV2as5qxqN8YKthn9qh0jw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1129,14 +1188,21 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^13.0.0": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.5.tgz#18121bfd39dc12f280cee58f92c5b21d32041908" - integrity sha512-CF/+sxTO7FOwbIRL4wMv0ZYLCRfMid2HQpzDRyViH7kSpfoAFiMdGqKIxb1PxWfjtQXQhnQuD33lvRHNwr809Q== + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.3.tgz#41453a0bc7ab393e995d1f5451455638edbd2baf" + integrity sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ== dependencies: "@types/yargs-parser" "*" @@ -1301,11 +1367,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1366,11 +1427,11 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -1429,6 +1490,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -1442,19 +1511,19 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3, aproba@^1.1.1: +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1492,7 +1561,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: +array-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== @@ -1595,9 +1664,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" - integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== babel-eslint@^10.0.3: version "10.0.3" @@ -1624,6 +1693,19 @@ babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" +babel-jest@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb" + integrity sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg== + dependencies: + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.1.0" + chalk "^3.0.0" + slash "^3.0.0" + babel-loader@^8.0.6: version "8.0.6" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" @@ -1651,6 +1733,17 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + babel-plugin-jest-hoist@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" @@ -1658,6 +1751,13 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz#fb62d7b3b53eb36c97d1bc7fec2072f9bd115981" + integrity sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw== + dependencies: + "@types/babel__traverse" "^7.0.6" + babel-plugin-macros@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" @@ -1684,6 +1784,15 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" +babel-preset-jest@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33" + integrity sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ== + dependencies: + "@babel/plugin-syntax-bigint" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^25.1.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1881,14 +1990,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.2, browserslist@^4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" - integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== +browserslist@^4.8.3, browserslist@^4.8.5: + version "4.8.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0" + integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA== dependencies: - caniuse-lite "^1.0.30001017" - electron-to-chromium "^1.3.322" - node-releases "^1.1.44" + caniuse-lite "^1.0.30001027" + electron-to-chromium "^1.3.349" + node-releases "^1.1.49" bser@2.1.1: version "2.1.1" @@ -2001,10 +2110,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001017: - version "1.0.30001020" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz#3f04c1737500ffda78be9beb0b5c1e2070e15926" - integrity sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA== +caniuse-lite@^1.0.30001027: + version "1.0.30001030" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" + integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== capture-exit@^2.0.0: version "2.0.0" @@ -2038,6 +2147,14 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2063,9 +2180,9 @@ chokidar@^2.0.2, chokidar@^2.1.8: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" @@ -2177,11 +2294,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2195,9 +2324,9 @@ commander@^2.20.0: integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" - integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commondir@^1.0.1: version "1.0.1" @@ -2254,11 +2383,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -2311,9 +2435,9 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.6.2: - version "3.6.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.3.tgz#41e281ca771209d5f2eb63ce34f96037d0928538" - integrity sha512-Y3YNGU3bU1yrnzVodop23ghArbKv4IqkZg9MMOWv/h7KT6NRk1/SzHhWDDlubg2+tlcUzAqgj1/GyeJ9fUKMeg== + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== dependencies: browserslist "^4.8.3" semver "7.0.0" @@ -2480,7 +2604,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2521,11 +2645,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2600,11 +2719,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -2628,11 +2742,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -2743,10 +2852,10 @@ ejs@^3.0.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.1.tgz#30c8f6ee9948502cc32e85c37a3f8b39b5a614a5" integrity sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw== -electron-to-chromium@^1.3.322: - version "1.3.332" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.332.tgz#283df02d8269e25d9e2f424e11e909c9730a8a82" - integrity sha512-AP2HkLhfSOIxP7gDjlyZ4ywGWIcxRMZoU9+JriuVkQe2pSLDdWBsE6+eI6BQOqun1dohLrUTOPHsQLLhhFA7Eg== +electron-to-chromium@^1.3.349: + version "1.3.360" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.360.tgz#1db9cb8d43f4c772546d94ea9be8b677a8ecb483" + integrity sha512-RE1pv2sjQiDRRN1nI0fJ0eQHZ9le4oobu16OArnwEUV5ycAU5SNjFyvzjZ1gPUAqBa2Ud1XagtW8j3ZXfHuQHA== elegant-spinner@^1.0.1: version "1.0.1" @@ -2781,6 +2890,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2825,10 +2939,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -2862,22 +2976,17 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.9.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" - integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" -eslint-plugin-eslint-plugin@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.2.0.tgz#6cac90a8085f658e892b155dda130deac54cfa51" - integrity sha512-X5+NT9a2GuwWyb3sHJdEEe6aD/30Fhi3/9XCmYHe/OSnWKUhmKOxFTfFM1AXZfJXjAoX7811bnoLI3fZr5AX5Q== - eslint-plugin-flowtype@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" @@ -2886,27 +2995,28 @@ eslint-plugin-flowtype@^4.6.0: lodash "^4.17.15" eslint-plugin-mocha@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.2.tgz#6ef4b78bd12d744beb08a06e8209de330985100d" - integrity sha512-oNhPzfkT6Q6CJ0HMVJ2KLxEWG97VWGTmuHOoRcDLE0U88ugUyFNV9wrT2XIt5cGtqc5W9k38m4xTN34L09KhBA== + version "6.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.3.0.tgz#72bfd06a5c4323e17e30ef41cd726030e8cdb8fd" + integrity sha512-Cd2roo8caAyG21oKaaNTj7cqeYRWW1I2B5SfpKRp0Ip1gkfwoR1Ow0IGlPWnNjzywdF4n+kHL8/9vM6zCJUxdg== dependencies: - ramda "^0.26.1" + eslint-utils "^2.0.0" + ramda "^0.27.0" eslint-plugin-react@^7.17.0: - version "7.17.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz#a31b3e134b76046abe3cd278e7482bd35a1d12d7" - integrity sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A== + version "7.18.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz#8be671b7f6be095098e79d27ac32f9580f599bc8" + integrity sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" - eslint-plugin-eslint-plugin "^2.1.0" has "^1.0.3" jsx-ast-utils "^2.2.3" - object.entries "^1.1.0" - object.fromentries "^2.0.1" - object.values "^1.1.0" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.13.1" + resolve "^1.14.2" + string.prototype.matchall "^4.0.2" eslint-scope@^4.0.3: version "4.0.3" @@ -2931,6 +3041,13 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" @@ -2988,20 +3105,15 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== dependencies: estraverse "^4.0.0" @@ -3219,21 +3331,22 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-glob@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" - integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.0" merge2 "^1.3.0" micromatch "^4.0.2" + picomatch "^2.2.1" fast-json-stable-stringify@^2.0.0: version "2.1.0" @@ -3294,9 +3407,9 @@ figures@^2.0.0: escape-string-regexp "^1.0.5" figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -3358,7 +3471,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3390,10 +3503,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flow-bin@^0.115.0: - version "0.115.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.115.0.tgz#22e3ad9e5c7198967de80138ba8a9154ff387960" - integrity sha512-xW+U2SrBaAr0EeLvKmXAmsdnrH6x0Io17P6yRJTNgrrV42G8KXhBAD00s6oGbTTqRyHD0nP47kyuU34zljZpaQ== +flow-bin@^0.119.0: + version "0.119.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.119.0.tgz#f72523b4843caf7302576f7ad3f63637070b69f1" + integrity sha512-fCVv++rjBsx/q6YVeB3F+A/owztjUO5PyBLwhGZdK5igVmiFQ8RKBTR9T2mb+SQRLZJJhl/xwPLhNzr3dBba6w== flush-write-stream@^1.0.0: version "1.1.1" @@ -3404,9 +3517,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== dependencies: debug "^3.0.0" @@ -3454,13 +3567,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3489,6 +3595,11 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3499,20 +3610,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3672,7 +3769,7 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3692,7 +3789,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -3712,16 +3809,16 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3786,9 +3883,9 @@ hmac-drbg@^1.0.0: minimalistic-crypto-utils "^1.0.1" hoist-non-react-statics@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#101685d3aff3b23ea213163f6e8e12f4f111e19f" - integrity sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw== + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" @@ -3923,7 +4020,7 @@ husky@^3.0.9: run-node "^1.0.0" slash "^3.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3947,13 +4044,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4044,15 +4134,15 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" - integrity sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw== + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.2" @@ -4076,6 +4166,15 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + interpret@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -4103,12 +4202,7 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -4355,7 +4449,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -4402,6 +4496,11 @@ istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" @@ -4415,6 +4514,19 @@ istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: istanbul-lib-coverage "^2.0.5" semver "^6.0.0" +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + istanbul-lib-report@^2.0.4: version "2.0.8" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" @@ -4568,6 +4680,24 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" +jest-haste-map@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3" + integrity sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw== + dependencies: + "@jest/types" "^25.1.0" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.3" + jest-serializer "^25.1.0" + jest-util "^25.1.0" + jest-worker "^25.1.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + jest-jasmine2@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" @@ -4639,6 +4769,11 @@ jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +jest-regex-util@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87" + integrity sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w== + jest-resolve-dependencies@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" @@ -4718,6 +4853,11 @@ jest-serializer@^24.9.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d" + integrity sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA== + jest-snapshot@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" @@ -4755,6 +4895,16 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" +jest-util@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9" + integrity sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw== + dependencies: + "@jest/types" "^25.1.0" + chalk "^3.0.0" + is-ci "^2.0.0" + mkdirp "^0.5.1" + jest-validate@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" @@ -4788,6 +4938,14 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4935,9 +5093,9 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" @@ -4961,10 +5119,10 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" - integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== dependencies: leven "^3.1.0" @@ -5060,7 +5218,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -5069,6 +5227,15 @@ loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2. emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5123,9 +5290,9 @@ log-update@^2.3.0: wrap-ansi "^3.0.1" loglevel@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -5340,21 +5507,6 @@ minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -5379,7 +5531,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5458,15 +5610,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5537,37 +5680,13 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - -node-releases@^1.1.44: - version "1.1.45" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" - integrity sha512-cXvGSfhITKI8qsV116u2FTzH5EWZJfgG7d4cpqwF8I8+1tWpD6AsvvGRKq2onR0DNj1jfqsjkXZsm14JMS7Cyg== +node-releases@^1.1.49: + version "1.1.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" + integrity sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ== dependencies: semver "^6.3.0" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5590,26 +5709,6 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5624,16 +5723,6 @@ npm-run-path@^3.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5695,7 +5784,7 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0: +object.entries@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== @@ -5705,7 +5794,7 @@ object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.1: +object.fromentries@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== @@ -5715,7 +5804,7 @@ object.fromentries@^2.0.1: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: +object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== @@ -5730,7 +5819,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: +object.values@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -5819,11 +5908,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5833,19 +5917,11 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -5924,9 +6000,9 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" @@ -6072,7 +6148,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.5: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== @@ -6194,14 +6270,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: uniq "^1.0.1" postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" - integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.26" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" - integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -6253,12 +6329,12 @@ promise-inflight@^1.0.1: integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= prompts@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" - integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== + version "2.3.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" + integrity sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA== dependencies: kleur "^3.0.3" - sisteransi "^1.0.3" + sisteransi "^1.0.4" prop-types@15.x, prop-types@^15.0.0, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -6270,19 +6346,19 @@ prop-types@15.x, prop-types@^15.0.0, prop-types@^15.6.0, prop-types@^15.6.1, pro react-is "^16.8.1" proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.9.1" prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.7.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== @@ -6329,7 +6405,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -6364,10 +6440,10 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -ramda@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43" + integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" @@ -6399,16 +6475,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" @@ -6433,9 +6499,9 @@ react-draggable@^4.0.0, react-draggable@^4.0.3: prop-types "^15.6.0" react-hot-loader@^4.12.18: - version "4.12.18" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.18.tgz#a9029e34af2690d76208f9a35189d73c2dfea6a7" - integrity sha512-qYD0Qi9lIbg9jLyfmodfqvAQqCBsoPKxAhca8Nxvy2/2pO5Q9r2kM28jN0bbbSnhwK8dJ7FjsfVtXKOxMW+bqw== + version "4.12.19" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.19.tgz#99a1c763352828f404fa51cd887c5e16bb5b74d1" + integrity sha512-p8AnA4QE2GtrvkdmqnKrEiijtVlqdTIDCHZOwItkI9kW51bt5XnQ/4Anz8giiWf9kqBpEQwsmnChDCAFBRyR/Q== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -6516,7 +6582,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6530,9 +6596,9 @@ read-pkg@^5.2.0: util-deprecate "~1.0.1" readable-stream@^3.0.6: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6586,7 +6652,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -6617,9 +6683,9 @@ regjsgen@^0.5.0: integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" - integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== + version "0.6.3" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.3.tgz#74192c5805d35e9f5ebe3c1fb5b40d40a8a38460" + integrity sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA== dependencies: jsesc "~0.5.0" @@ -6655,9 +6721,9 @@ request-promise-native@^1.0.5: tough-cookie "^2.3.3" request@^2.87.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -6666,7 +6732,7 @@ request@^2.87.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -6676,7 +6742,7 @@ request@^2.87.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -6730,6 +6796,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -6740,10 +6811,10 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" - integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.3.2: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" @@ -6785,7 +6856,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6793,9 +6864,9 @@ rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: glob "^7.1.3" rimraf@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" - integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -6902,10 +6973,10 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.1, schema-utils@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== +schema-utils@^2.6.0, schema-utils@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" + integrity sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ== dependencies: ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -6927,7 +6998,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6989,7 +7060,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7061,12 +7132,20 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -sisteransi@^1.0.3: +sisteransi@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== @@ -7354,7 +7433,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7380,6 +7459,18 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -7467,18 +7558,13 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-loader@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.2.tgz#1b519c19faf548df6182b93e72ea1a4156022c2f" - integrity sha512-0Mpq1ZHFDCNq1F+6avNBgv+7q8V+mWRuzehxyJT+aKgzyN/yfKTwjYqaYwBgx+11UpQxL21zNQfzzlz+JcGURw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== dependencies: loader-utils "^1.2.3" - schema-utils "^2.0.1" + schema-utils "^2.6.4" supports-color@6.1.0, supports-color@^6.1.0: version "6.1.0" @@ -7499,6 +7585,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7524,19 +7617,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" @@ -7553,9 +7633,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.1.2: - version "4.6.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" - integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== + version "4.6.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.4.tgz#40a0b37afbe5b57e494536815efa68326840fc00" + integrity sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -7571,6 +7651,15 @@ test-exclude@^5.2.3: read-pkg-up "^4.0.0" require-main-filename "^2.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -7665,7 +7754,7 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@^2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -7673,14 +7762,6 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -7689,9 +7770,9 @@ tr46@^1.0.1: punycode "^2.1.0" tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + version "1.11.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" + integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== tty-browserify@0.0.0: version "0.0.0" @@ -7735,6 +7816,13 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -7849,12 +7937,14 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" util@0.10.3: version "0.10.3" @@ -7876,9 +7966,9 @@ utils-merge@1.0.1: integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@2.0.3: version "2.0.3" @@ -7953,9 +8043,9 @@ webidl-conversions@^4.0.2: integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-cli@^3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" - integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== + version "3.3.11" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" + integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -7981,9 +8071,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" - integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -8036,9 +8126,9 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-map "~0.6.1" webpack@^4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== + version "4.41.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.6.tgz#12f2f804bf6542ef166755050d4afbc8f66ba7e1" + integrity sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -8127,13 +8217,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8185,6 +8268,16 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -8221,7 +8314,7 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From 0e38ea00d59f84ab6bb3f2bda1ca6146e5ff15a6 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 11:25:46 -0500 Subject: [PATCH 078/101] fix(types): fix flow typing for WidthProvider and make props exact. This made the bug described in #1137/#1138 visible by adding typing to examples, ensuring that we're using RGL and RRGL as well as the WidthProvider HOC in actual code, so Flow covers it completely. --- lib/ReactGridLayoutPropTypes.js | 4 +-- lib/ResponsiveReactGridLayout.jsx | 11 ++++---- lib/components/WidthProvider.jsx | 47 ++++++++++++++++++++++--------- test/examples/0-showcase.jsx | 31 ++++++++++++++++---- test/examples/3-messy.jsx | 39 ++++++++++++++++--------- 5 files changed, 91 insertions(+), 41 deletions(-) diff --git a/lib/ReactGridLayoutPropTypes.js b/lib/ReactGridLayoutPropTypes.js index 963feaa58..4fc3147a7 100644 --- a/lib/ReactGridLayoutPropTypes.js +++ b/lib/ReactGridLayoutPropTypes.js @@ -7,7 +7,7 @@ import type { } from "react"; import type { EventCallback, CompactType, Layout, LayoutItem } from "./utils"; -export type Props = { +export type Props = {| className: string, style: Object, width: number, @@ -46,7 +46,7 @@ export type Props = { e: Event }) => void, children: ReactChildrenArray> -}; +|}; export default { // diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index ac9c1983d..9736bf0c4 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -1,5 +1,5 @@ // @flow -import React from "react"; +import * as React from "react"; import PropTypes from "prop-types"; import isEqual from "lodash.isequal"; @@ -15,7 +15,6 @@ import { findOrGenerateResponsiveLayout } from "./responsiveUtils"; import ReactGridLayout from "./ReactGridLayout"; -import type { Props as RGLProps } from "./ReactGridLayoutPropTypes"; import type { Layout } from "./utils"; const type = obj => Object.prototype.toString.call(obj); @@ -42,11 +41,11 @@ type State = { layouts?: { [key: string]: Layout } }; -type Props = { - ...$Exact, +type Props = {| + ...React.ElementConfig, // Responsive config - breakpoint: Breakpoint, + breakpoint?: ?Breakpoint, breakpoints: { [key: Breakpoint]: number }, cols: { [key: Breakpoint]: number }, layouts: { [key: Breakpoint]: Layout }, @@ -63,7 +62,7 @@ type Props = { cols: number, containerPadding: [number, number] | null ) => void -}; +|}; export default class ResponsiveReactGridLayout extends React.Component< Props<>, diff --git a/lib/components/WidthProvider.jsx b/lib/components/WidthProvider.jsx index 2920a54da..a15d064b9 100644 --- a/lib/components/WidthProvider.jsx +++ b/lib/components/WidthProvider.jsx @@ -1,14 +1,18 @@ // @flow -import React from "react"; +import * as React from "react"; import PropTypes from "prop-types"; import ReactDOM from "react-dom"; -import type { ComponentType as ReactComponentType } from "react"; -type WPProps = { +type WPDefaultProps = {| + measureBeforeMount: boolean +|}; + +// eslint-disable-next-line no-unused-vars +type WPProps = {| className?: string, - measureBeforeMount: boolean, - style?: Object -}; + style?: Object, + ...WPDefaultProps +|}; type WPState = {| width: number @@ -16,15 +20,30 @@ type WPState = {| /* * A simple HOC that provides facility for listening to container resizes. + * + * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers + * a flow bug of some sort that causes it to stop typechecking. */ -export default function WidthProvider< - Props, - ComposedProps: { ...Props, ...WPProps } ->( - ComposedComponent: ReactComponentType -): ReactComponentType { - return class WidthProvider extends React.Component { - static defaultProps = { +export default function WidthProvider( + ComposedComponent: React.AbstractComponent +): React.AbstractComponent<{| + ...Config, + measureBeforeMount?: boolean, + className?: string, + style?: Object, + width?: number +|}> { + return class WidthProvider extends React.Component< + {| + ...Config, + measureBeforeMount?: boolean, + className?: string, + style?: Object, + width?: number + |}, + WPState + > { + static defaultProps: WPDefaultProps = { measureBeforeMount: false }; diff --git a/test/examples/0-showcase.jsx b/test/examples/0-showcase.jsx index 62bf0982f..8b295eb74 100644 --- a/test/examples/0-showcase.jsx +++ b/test/examples/0-showcase.jsx @@ -1,9 +1,26 @@ +// @flow import React from "react"; import _ from "lodash"; -import { Responsive, WidthProvider } from "react-grid-layout"; +import Responsive from '../../lib/ResponsiveReactGridLayout'; +import WidthProvider from '../../lib/components/WidthProvider'; +import type {CompactType, Layout} from '../../lib/utils'; const ResponsiveReactGridLayout = WidthProvider(Responsive); -export default class ShowcaseLayout extends React.Component { +type Props = {| + className: string, + cols: {[string]: number}, + initialLayout: Layout, + onLayoutChange: Function, + rowHeight: number, +|}; +type State = {| + currentBreakpoint: string, + compactType: CompactType, + mounted: boolean, + layouts: {[string]: Layout} +|}; + +export default class ShowcaseLayout extends React.Component { static defaultProps = { className: "layout", rowHeight: 30, @@ -42,7 +59,7 @@ export default class ShowcaseLayout extends React.Component { }); } - onBreakpointChange = breakpoint => { + onBreakpointChange = (breakpoint: string) => { this.setState({ currentBreakpoint: breakpoint }); @@ -59,7 +76,7 @@ export default class ShowcaseLayout extends React.Component { this.setState({ compactType }); }; - onLayoutChange = (layout, layouts) => { + onLayoutChange = (layout: Layout, layouts: {[string]: Layout}) => { this.props.onLayoutChange(layout, layouts); }; @@ -69,11 +86,13 @@ export default class ShowcaseLayout extends React.Component { }); }; - onDrop = elemParams => { + onDrop = (elemParams: Object) => { alert(`Element parameters: ${JSON.stringify(elemParams)}`); }; render() { + // eslint-disable-next-line no-unused-vars + const {initialLayout, ...props} = this.props; return (
    @@ -89,7 +108,7 @@ export default class ShowcaseLayout extends React.Component { Change Compaction Type { static defaultProps = { className: "layout", + cols: 12, items: 20, - rowHeight: 30, onLayoutChange: function() {}, - cols: 12 + rowHeight: 30, }; - constructor(props) { - super(props); - - const layout = this.generateLayout(); - this.state = { layout }; - } + state = { + layout: this.generateLayout() + }; generateDOM() { return _.map(_.range(this.props.items), function(i) { @@ -30,7 +41,7 @@ export default class MessyLayout extends React.PureComponent { }); } - generateLayout() { + generateLayout(): Layout { const p = this.props; return _.map(new Array(p.items), function(item, i) { const w = Math.ceil(Math.random() * 4); @@ -45,16 +56,18 @@ export default class MessyLayout extends React.PureComponent { }); } - onLayoutChange(layout) { + onLayoutChange(layout: Layout) { this.props.onLayoutChange(layout); } render() { + // eslint-disable-next-line no-unused-vars + const {items, ...props} = this.props; return ( {this.generateDOM()} From 616daafe5a2f6b6408e8863200cfb4d86a9cfe99 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Tue, 25 Feb 2020 11:28:31 -0500 Subject: [PATCH 079/101] release 0.18.1 --- CHANGELOG.md | 14 +++++++++++++- dist/react-grid-layout.min.js | 2 +- dist/react-grid-layout.min.js.map | 2 +- package.json | 4 ++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index add851786..2ad757828 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +0.18.1 (Feb 25, 2020) +---- + +This release contains typedef changes only. + +### Bugfixes + - Flow types: + - Make Props to `` and `` exact. + - Fix loss of props refinement when passing through `WidthProvider`. + - Fix Flow errors as surfaced in [#1138](https://github.com/STRML/react-grid-layout/pull/1138). + - Modify examples to use types so that the above type error can't resurface + 0.18.0 (Feb 25, 2020) ---- @@ -30,7 +42,7 @@ Thanks to all of our maintainers for this big release. 0.18.0 contains a large n - Added `shouldComponentUpdate` to major elements for speed. Significant [performance improvements](https://github.com/STRML/react-grid-layout/pull/1032#issuecomment-541604763) while dragging. Started in [#1032](https://github.com/STRML/react-grid-layout/pull/1032) and finished in [#1123](https://github.com/STRML/react-grid-layout/pull/1123). - A [fun trick for the curious](https://github.com/STRML/react-grid-layout/blob/44e200067b3640c3230f5511e8624a7c629d2f9a/lib/fastRGLPropsEqual.js). -- Internal refactor of dropping capability. It is now more predictable and uses similar unit labels (`left`, `top`) to other features. [#1128](https://github.com/STRML/react-grid-layout/issues/1128) +- Internal refactor of dropping capability. It is now more predictable and uses similar unit labels (`left`, `top`) to other features. [#1128](https://github.com/STRML/react-grid-layout/issues/1128) - Upgrade devDependencies. - Remove ESPower from test suite (not useful with Jest). diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index ee8c630d1..dba2274a9 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -8,5 +8,5 @@ Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function M(t){return"both"===t.props.axis||"x"===t.props.axis}function L(t){return"both"===t.props.axis||"y"===t.props.axis}function N(t,e,n){var r="number"==typeof e?function(t,e){return t.targetTouches&&p(t.targetTouches,(function(t){return e===t.identifier}))||t.changedTouches&&p(t.changedTouches,(function(t){return e===t.identifier}))}(t,e):null;if("number"==typeof e&&!r)return null;var o=A(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function H(t,e,n){var r=t.state,o=!h(r.lastX),a=A(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function W(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function A(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function q(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!j(t.target,n.props.handle,e)||n.props.cancel&&j(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=N(t,o,U(n));if(null!=a){var i=a.x,s=a.y,c=H(U(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&C(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,$.move,n.handleDrag),x(r,$.stop,n.handleDragStop))}}})),F(U(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=B((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var p=H(U(n),i,s);if(!1!==n.props.onDrag(t,p))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(f)}}})),F(U(n),"handleDragStop",(function(t){if(n.state.dragging){var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r=e.x,o=e.y,a=H(U(n),r,o),i=u.a.findDOMNode(U(n));i&&n.props.enableUserSelectHack&&E(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(D(i.ownerDocument,$.move,n.handleDrag),D(i.ownerDocument,$.stop,n.handleDragStop))}}})),F(U(n),"onMouseDown",(function(t){return $=V,n.handleDragStart(t)})),F(U(n),"onMouseUp",(function(t){return $=V,n.handleDragStop(t)})),F(U(n),"onTouchStart",(function(t){return $=G,n.handleDragStart(t)})),F(U(n),"onTouchEnd",(function(t){return $=G,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&X(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;D(e,V.move,this.handleDrag),D(e,G.move,this.handleDrag),D(e,V.stop,this.handleDragStop),D(e,G.stop,this.handleDragStop),this.props.enableUserSelectHack&&E(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:T(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&q(n.prototype,r),e}();function K(t){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&at(t,e)}(e,o.a.Component),ot(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:tt({},n)}}}]),ot(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,p=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),f={},h=null,d=!Boolean(u)||this.state.dragging,y=u||r,g={x:M(this)&&d?this.state.x:y.x,y:L(this)&&d?this.state.y:y.y};this.state.isElementSVG?h=function(t,e){return k(t,e,"")}(g,c):f=function(t,e){var n=k(t,e,"px");return w({},b("transform",m),n)}(g,c);var v=l()(n.props.className||"",a,(it(t={},i,this.state.dragging),it(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:tt({},n.props.style,{},f),transform:h}))}}]),e}();it(st,"displayName","Draggable"),it(st,"propTypes",tt({},J.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),it(st,"defaultProps",tt({},J.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(3),i=n.n(a),s=n(6),u=n.n(s),c=n(1);function l(t){var e=t.margin,n=t.containerPadding,r=t.containerWidth,o=t.cols;return(r-e[0]*(o-1)-2*n[0])/o}function p(t,e,n,r,o,a){var i=t.margin,s=t.containerPadding,u=t.rowHeight,c=l(t),p={};return a&&a.resizing?(p.width=Math.round(a.resizing.width),p.height=Math.round(a.resizing.height)):(p.width=r===1/0?r:Math.round(c*r+Math.max(0,r-1)*i[0]),p.height=o===1/0?o:Math.round(u*o+Math.max(0,o-1)*i[1])),a&&a.dragging?(p.top=Math.round(a.dragging.top),p.left=Math.round(a.dragging.left)):(p.top=Math.round((u+i[1])*n+s[1]),p.left=Math.round((c+i[0])*e+s[0])),p}function f(t,e,n,r,o){var a=t.margin,i=t.cols,s=t.rowHeight,u=t.maxRows,c=l(t),p=Math.round((n-a[0])/(c+a[0])),f=Math.round((e-a[1])/(s+a[1]));return{x:p=Math.max(Math.min(p,i-r),0),y:f=Math.max(Math.min(f,u-o),0)}}var h=n(5),d=n.n(h),y=n(0),g=n.n(y),b=n(7),m=n(10);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:t.cols,containerPadding:t.containerPadding,containerWidth:t.containerWidth,margin:t.margin,maxRows:t.maxRows,rowHeight:t.rowHeight}}},{key:"createStyle",value:function(t){var e,n=this.props,r=n.usePercentages,o=n.containerWidth;return n.useCSSTransforms?e=Object(c.setTransform)(t):(e=Object(c.setTopLeft)(t),r&&(e.left=Object(c.perc)(t.left/o),e.width=Object(c.perc)(t.width/o))),e}},{key:"mixinDraggable",value:function(t,e){return o.a.createElement(b.DraggableCore,{disabled:!e,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale},t)}},{key:"mixinResizable",value:function(t,e,n){var r=this.props,a=r.cols,i=r.x,s=r.minW,u=r.minH,c=r.maxW,l=r.maxH,f=r.transformScale,h=this.getPositionParams(),d=p(h,0,0,a-i,0).width,y=p(h,0,0,s,u),g=p(h,0,0,c,l),b=[y.width,y.height],v=[Math.min(g.width,d),Math.min(g.height,1/0)];return o.a.createElement(m.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:e.width,height:e.height,minConstraints:b,maxConstraints:v,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f},t)}},{key:"onResizeHandler",value:function(t,e,n){var r=e.node,o=e.size,a=this.props[n];if(a){var i=this.props,s=i.cols,u=i.x,c=i.y,p=i.i,f=i.maxW,h=i.minW,d=i.maxH,y=i.minH,g=function(t,e,n,r,o){var a=t.margin,i=t.maxRows,s=t.cols,u=t.rowHeight,c=l(t),p=Math.round((e+a[0])/(c+a[0])),f=Math.round((n+a[1])/(u+a[1]));return{w:p=Math.max(Math.min(p,s-r),0),h:f=Math.max(Math.min(f,i-o),0)}}(this.getPositionParams(),o.width,o.height,u,c),b=g.w,m=g.h;b=Math.min(b,s-u),b=Math.max(b,1),b=Math.max(Math.min(b,f),h),m=Math.max(Math.min(m,d),y),this.setState({resizing:"onResizeStop"===n?null:o}),a.call(this,p,b,m,{e:t,node:r,size:o})}}},{key:"render",value:function(){var t=this.props,e=t.x,n=t.y,r=t.w,a=t.h,i=t.isDraggable,s=t.isResizable,c=t.droppingPosition,l=t.useCSSTransforms,f=p(this.getPositionParams(),e,n,r,a,this.state),h=o.a.Children.only(this.props.children),d=o.a.cloneElement(h,{className:u()("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(c),cssTransforms:l}),style:O({},this.props.style,{},h.props.style,{},this.createStyle(f))});return d=this.mixinResizable(d,f,s),d=this.mixinDraggable(d,i)}}])&&j(n.prototype,r),a&&j(n,a),e}(o.a.Component);R(z,"propTypes",{children:g.a.element,cols:g.a.number.isRequired,containerWidth:g.a.number.isRequired,rowHeight:g.a.number.isRequired,margin:g.a.array.isRequired,maxRows:g.a.number.isRequired,containerPadding:g.a.array.isRequired,x:g.a.number.isRequired,y:g.a.number.isRequired,w:g.a.number.isRequired,h:g.a.number.isRequired,minW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("minWidth not Number"):n>t.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>h.x&&(g=Math.min(g,t.x)),t.y>h.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(h.w=g-h.x),Number.isFinite(b)&&(h.h=b-h.y)}}d||(h.w=e,h.h=n);var m={w:h.w,h:h.h,x:h.x,y:h.y,static:!0,i:t};this.props.onResize(s,u,h,m,o,a),this.setState({layout:Object(c.compact)(s,Object(c.compactType)(this.props),p),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,u=i.oldResizeItem,l=this.props.cols,p=Object(c.getLayoutItem)(s,t);this.props.onResizeStop(s,u,p,null,o,a);var f=Object(c.compact)(s,Object(c.compactType)(this.props),l),h=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,h)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,u=e.maxRows,c=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(z,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:c,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(c.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,u=r.containerPadding,l=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,d=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,w=m.droppingPosition,O="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,S="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h;return o.a.createElement(z,{containerWidth:a,cols:i,margin:s,containerPadding:u||s,maxRows:p,rowHeight:l,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:O,isResizable:S,useCSSTransforms:d&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?w:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=u()("react-grid-layout",n),s=T({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:c.noop,onDragLeave:a?this.onDragLeave:c.noop,onDragEnter:a?this.onDragEnter:c.noop,onDragOver:a?this.onDragOver:c.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&L(n.prototype,r),a&&L(n,a),e}(o.a.Component);A(B,"displayName","ReactGridLayout"),A(B,"propTypes",k),A(B,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:c.noop,onDragStart:c.noop,onDrag:c.noop,onDragStop:c.noop,onResizeStart:c.noop,onResize:c.noop,onResizeStop:c.noop,onDrop:c.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(17);function s(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"])),f=l.className?l.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:u,minConstraints:c,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:h},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},d)))},o}(r.default.Component);e.default=l,c(l,"propTypes",{height:o.default.number,width:o.default.number}),c(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return P}));var r=n(2),o=n.n(r),a=n(0),i=n.n(a),s=n(3),u=n.n(s),c=n(1),l=n(4),p=n(8);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(){return(h=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function h(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function M(t){return"both"===t.props.axis||"x"===t.props.axis}function L(t){return"both"===t.props.axis||"y"===t.props.axis}function N(t,e,n){var r="number"==typeof e?function(t,e){return t.targetTouches&&p(t.targetTouches,(function(t){return e===t.identifier}))||t.changedTouches&&p(t.changedTouches,(function(t){return e===t.identifier}))}(t,e):null;if("number"==typeof e&&!r)return null;var o=A(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function H(t,e,n){var r=t.state,o=!h(r.lastX),a=A(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function W(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function A(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function q(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!j(t.target,n.props.handle,e)||n.props.cancel&&j(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=N(t,o,U(n));if(null!=a){var i=a.x,s=a.y,c=H(U(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&C(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,$.move,n.handleDrag),x(r,$.stop,n.handleDragStop))}}})),F(U(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=B((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var p=H(U(n),i,s);if(!1!==n.props.onDrag(t,p))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(f)}}})),F(U(n),"handleDragStop",(function(t){if(n.state.dragging){var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r=e.x,o=e.y,a=H(U(n),r,o),i=u.a.findDOMNode(U(n));i&&n.props.enableUserSelectHack&&E(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(D(i.ownerDocument,$.move,n.handleDrag),D(i.ownerDocument,$.stop,n.handleDragStop))}}})),F(U(n),"onMouseDown",(function(t){return $=V,n.handleDragStart(t)})),F(U(n),"onMouseUp",(function(t){return $=V,n.handleDragStop(t)})),F(U(n),"onTouchStart",(function(t){return $=G,n.handleDragStart(t)})),F(U(n),"onTouchEnd",(function(t){return $=G,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&X(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;D(e,V.move,this.handleDrag),D(e,G.move,this.handleDrag),D(e,V.stop,this.handleDragStop),D(e,G.stop,this.handleDragStop),this.props.enableUserSelectHack&&E(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:T(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&q(n.prototype,r),e}();function K(t){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&at(t,e)}(e,o.a.Component),ot(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:tt({},n)}}}]),ot(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,p=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),f={},h=null,d=!Boolean(u)||this.state.dragging,y=u||r,g={x:M(this)&&d?this.state.x:y.x,y:L(this)&&d?this.state.y:y.y};this.state.isElementSVG?h=function(t,e){return k(t,e,"")}(g,c):f=function(t,e){var n=k(t,e,"px");return w({},b("transform",m),n)}(g,c);var v=l()(n.props.className||"",a,(it(t={},i,this.state.dragging),it(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:tt({},n.props.style,{},f),transform:h}))}}]),e}();it(st,"displayName","Draggable"),it(st,"propTypes",tt({},J.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),it(st,"defaultProps",tt({},J.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(3),i=n.n(a),s=n(6),u=n.n(s),c=n(1);function l(t){var e=t.margin,n=t.containerPadding,r=t.containerWidth,o=t.cols;return(r-e[0]*(o-1)-2*n[0])/o}function p(t,e,n,r,o,a){var i=t.margin,s=t.containerPadding,u=t.rowHeight,c=l(t),p={};return a&&a.resizing?(p.width=Math.round(a.resizing.width),p.height=Math.round(a.resizing.height)):(p.width=r===1/0?r:Math.round(c*r+Math.max(0,r-1)*i[0]),p.height=o===1/0?o:Math.round(u*o+Math.max(0,o-1)*i[1])),a&&a.dragging?(p.top=Math.round(a.dragging.top),p.left=Math.round(a.dragging.left)):(p.top=Math.round((u+i[1])*n+s[1]),p.left=Math.round((c+i[0])*e+s[0])),p}function f(t,e,n,r,o){var a=t.margin,i=t.cols,s=t.rowHeight,u=t.maxRows,c=l(t),p=Math.round((n-a[0])/(c+a[0])),f=Math.round((e-a[1])/(s+a[1]));return{x:p=Math.max(Math.min(p,i-r),0),y:f=Math.max(Math.min(f,u-o),0)}}var h=n(5),d=n.n(h),y=n(0),g=n.n(y),b=n(7),m=n(10);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:t.cols,containerPadding:t.containerPadding,containerWidth:t.containerWidth,margin:t.margin,maxRows:t.maxRows,rowHeight:t.rowHeight}}},{key:"createStyle",value:function(t){var e,n=this.props,r=n.usePercentages,o=n.containerWidth;return n.useCSSTransforms?e=Object(c.setTransform)(t):(e=Object(c.setTopLeft)(t),r&&(e.left=Object(c.perc)(t.left/o),e.width=Object(c.perc)(t.width/o))),e}},{key:"mixinDraggable",value:function(t,e){return o.a.createElement(b.DraggableCore,{disabled:!e,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale},t)}},{key:"mixinResizable",value:function(t,e,n){var r=this.props,a=r.cols,i=r.x,s=r.minW,u=r.minH,c=r.maxW,l=r.maxH,f=r.transformScale,h=this.getPositionParams(),d=p(h,0,0,a-i,0).width,y=p(h,0,0,s,u),g=p(h,0,0,c,l),b=[y.width,y.height],v=[Math.min(g.width,d),Math.min(g.height,1/0)];return o.a.createElement(m.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:e.width,height:e.height,minConstraints:b,maxConstraints:v,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f},t)}},{key:"onResizeHandler",value:function(t,e,n){var r=e.node,o=e.size,a=this.props[n];if(a){var i=this.props,s=i.cols,u=i.x,c=i.y,p=i.i,f=i.maxW,h=i.minW,d=i.maxH,y=i.minH,g=function(t,e,n,r,o){var a=t.margin,i=t.maxRows,s=t.cols,u=t.rowHeight,c=l(t),p=Math.round((e+a[0])/(c+a[0])),f=Math.round((n+a[1])/(u+a[1]));return{w:p=Math.max(Math.min(p,s-r),0),h:f=Math.max(Math.min(f,i-o),0)}}(this.getPositionParams(),o.width,o.height,u,c),b=g.w,m=g.h;b=Math.min(b,s-u),b=Math.max(b,1),b=Math.max(Math.min(b,f),h),m=Math.max(Math.min(m,d),y),this.setState({resizing:"onResizeStop"===n?null:o}),a.call(this,p,b,m,{e:t,node:r,size:o})}}},{key:"render",value:function(){var t=this.props,e=t.x,n=t.y,r=t.w,a=t.h,i=t.isDraggable,s=t.isResizable,c=t.droppingPosition,l=t.useCSSTransforms,f=p(this.getPositionParams(),e,n,r,a,this.state),h=o.a.Children.only(this.props.children),d=o.a.cloneElement(h,{className:u()("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(c),cssTransforms:l}),style:O({},this.props.style,{},h.props.style,{},this.createStyle(f))});return d=this.mixinResizable(d,f,s),d=this.mixinDraggable(d,i)}}])&&j(n.prototype,r),a&&j(n,a),e}(o.a.Component);R(z,"propTypes",{children:g.a.element,cols:g.a.number.isRequired,containerWidth:g.a.number.isRequired,rowHeight:g.a.number.isRequired,margin:g.a.array.isRequired,maxRows:g.a.number.isRequired,containerPadding:g.a.array.isRequired,x:g.a.number.isRequired,y:g.a.number.isRequired,w:g.a.number.isRequired,h:g.a.number.isRequired,minW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("minWidth not Number"):n>t.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>h.x&&(g=Math.min(g,t.x)),t.y>h.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(h.w=g-h.x),Number.isFinite(b)&&(h.h=b-h.y)}}d||(h.w=e,h.h=n);var m={w:h.w,h:h.h,x:h.x,y:h.y,static:!0,i:t};this.props.onResize(s,u,h,m,o,a),this.setState({layout:Object(c.compact)(s,Object(c.compactType)(this.props),p),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,u=i.oldResizeItem,l=this.props.cols,p=Object(c.getLayoutItem)(s,t);this.props.onResizeStop(s,u,p,null,o,a);var f=Object(c.compact)(s,Object(c.compactType)(this.props),l),h=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,h)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,u=e.maxRows,c=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(z,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:c,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(c.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,u=r.containerPadding,l=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,d=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,w=m.droppingPosition,O="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,S="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h;return o.a.createElement(z,{containerWidth:a,cols:i,margin:s,containerPadding:u||s,maxRows:p,rowHeight:l,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:O,isResizable:S,useCSSTransforms:d&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?w:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=u()("react-grid-layout",n),s=T({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:c.noop,onDragLeave:a?this.onDragLeave:c.noop,onDragEnter:a?this.onDragEnter:c.noop,onDragOver:a?this.onDragOver:c.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&L(n.prototype,r),a&&L(n,a),e}(o.a.Component);A(B,"displayName","ReactGridLayout"),A(B,"propTypes",k),A(B,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:c.noop,onDragStart:c.noop,onDrag:c.noop,onDragStop:c.noop,onResizeStart:c.noop,onResize:c.noop,onResizeStop:c.noop,onDrop:c.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(17);function s(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"])),f=l.className?l.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:u,minConstraints:c,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:h},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},d)))},o}(r.default.Component);e.default=l,c(l,"propTypes",{height:o.default.number,width:o.default.number}),c(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return D}));var r=n(2),o=n(0),a=n.n(o),i=n(3),s=n.n(i),u=n(1),c=n(4),l=n(8);function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(){return(f=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){for(var n=0;n;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { left: number, top: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\ntype FastRGLPropsEqual = (Object, Object, Function) => boolean;\nexport const fastRGLPropsEqual: FastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nexport function fastPositionEqual(a: Position, b: Position) {\n return (\n a.left === b.left &&\n a.top === b.top &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nexport function compactType(\n props: ?{ verticalCompact: boolean, compactType: CompactType }\n): CompactType {\n const { verticalCompact, compactType } = props || {};\n return verticalCompact === false ? null : compactType;\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport type { Position } from \"./utils\";\n\nexport type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};\n\n// Helper for generating column width\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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 {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\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 {Position} Object containing coords.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number\n): { x: number, y: number } {\n const { margin, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number\n): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n}\n","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { fastPositionEqual, perc, setTopLeft, setTransform } from \"./utils\";\nimport { calcGridItemPosition, calcXY, calcWH } from \"./calculateUtils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n let { x, y, w, h } = this.props;\n const oldPosition = calcGridItemPosition(\n this.getPositionParams(this.props),\n x,\n y,\n w,\n h,\n this.state\n );\n ({ x, y, w, h } = nextProps);\n const newPosition = calcGridItemPosition(\n this.getPositionParams(nextProps),\n x,\n y,\n w,\n h,\n nextState\n );\n return (\n !fastPositionEqual(oldPosition, newPosition) ||\n this.props.useCSSTransforms !== nextProps.useCSSTransforms\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const prevDroppingPosition = prevProps.droppingPosition;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevDroppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.left !== prevDroppingPosition.left) ||\n droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n getPositionParams(props: Props = this.props): PositionParams {\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(\n child: ReactElement,\n isDraggable: boolean\n ): ReactElement {\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(\n child: ReactElement,\n position: Position,\n isResizable: boolean\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0)\n .width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const { onDrag, transformScale } = this.props;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n onDrag &&\n onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, y, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = calcWH(\n this.getPositionParams(),\n size.width,\n size.height,\n x,\n y\n );\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = calcGridItemPosition(\n this.getPositionParams(),\n x,\n y,\n w,\n h,\n this.state\n );\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n\n return newChild;\n }\n}\n","// @flow\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nimport type { EventCallback, CompactType, Layout, LayoutItem } from \"./utils\";\n\nexport type Props = {\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number,\n e: Event\n }) => void,\n children: ReactChildrenArray>\n};\n\nexport default {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n};\n","// @flow\nimport React from \"react\";\n\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n getAllCollisions,\n compactType,\n noop,\n fastRGLPropsEqual\n} from \"./utils\";\n\nimport { calcXY } from \"./calculateUtils\";\n\nimport GridItem from \"./GridItem\";\nimport ReactGridLayoutPropTypes from \"./ReactGridLayoutPropTypes\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nimport type { Props } from \"./ReactGridLayoutPropTypes\";\n\n// End Types\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n // Refactored to another module to make way for preval\n static propTypes = ReactGridLayoutPropTypes;\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n !fastRGLPropsEqual(this.props, nextProps, isEqual) ||\n !isEqual(this.state.activeDrag, nextState.activeDrag)\n );\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n if (!this.state.activeDrag) return;\n\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable =\n typeof l.isDraggable === \"boolean\"\n ? l.isDraggable\n : !l.static && isDraggable;\n const resizable =\n typeof l.isResizable === \"boolean\"\n ? l.isResizable\n : !l.static && isResizable;\n\n return (\n \n {child}\n \n );\n }\n\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (\n isFirefox &&\n e.nativeEvent.target.className.indexOf(layoutClassName) === -1\n ) {\n return false;\n }\n\n const {\n droppingItem,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding\n } = this.props;\n const { layout } = this.state;\n // This is relative to the DOM element that this event fired for.\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { left: layerX, top: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n const positionParams: PositionParams = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n\n const calculatedPosition = calcXY(\n positionParams,\n layerY,\n layerX,\n droppingItem.w,\n droppingItem.h\n );\n\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const { left, top } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({ droppingPosition });\n }\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = (e: Event) => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h, e });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n deltaX /= _this2.props.transformScale;\n deltaY /= _this2.props.transformScale; // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n transformScale: _propTypes.default.number,\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Props as RGLProps } from \"./ReactGridLayoutPropTypes\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {\n ...$Exact,\n\n // Responsive config\n breakpoint: Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: { lg: null, md: null, sm: null, xs: null, xxs: null },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(prevProps);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(prevProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = this.props;\n const newBreakpoint =\n this.props.breakpoint ||\n getBreakpointFromWidth(this.props.breakpoints, this.props.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n const newLayouts = { ...layouts };\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n prevProps.breakpoints !== breakpoints ||\n prevProps.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts))\n newLayouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n newLayouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n this.props.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n this.props.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n this.props.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\nimport type { ComponentType as ReactComponentType } from \"react\";\n\ntype WPProps = {\n className?: string,\n measureBeforeMount: boolean,\n style?: Object\n};\n\ntype WPState = {|\n width: number\n|};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n */\nexport default function WidthProvider<\n Props,\n ComposedProps: { ...Props, ...WPProps }\n>(\n ComposedComponent: ReactComponentType\n): ReactComponentType {\n return class WidthProvider extends React.Component {\n static defaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ReactGridLayout/webpack/universalModuleDefinition","webpack://ReactGridLayout/webpack/bootstrap","webpack://ReactGridLayout/./node_modules/prop-types/index.js","webpack://ReactGridLayout/./lib/utils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://ReactGridLayout/./node_modules/lodash.isequal/index.js","webpack://ReactGridLayout/./lib/responsiveUtils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack://ReactGridLayout/./node_modules/classnames/index.js","webpack://ReactGridLayout/./node_modules/react-draggable/build/web/react-draggable.min.js","webpack://ReactGridLayout/./lib/calculateUtils.js","webpack://ReactGridLayout/./lib/GridItem.jsx","webpack://ReactGridLayout/./lib/ReactGridLayoutPropTypes.js","webpack://ReactGridLayout/./lib/ReactGridLayout.jsx","webpack://ReactGridLayout/./node_modules/react-resizable/build/Resizable.js","webpack://ReactGridLayout/./node_modules/react-resizable/index.js","webpack://ReactGridLayout/./index-dev.js","webpack://ReactGridLayout/(webpack)/buildin/global.js","webpack://ReactGridLayout/(webpack)/buildin/module.js","webpack://ReactGridLayout/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactGridLayout/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/utils.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/ResizableBox.js","webpack://ReactGridLayout/./lib/ResponsiveReactGridLayout.jsx","webpack://ReactGridLayout/./lib/components/WidthProvider.jsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","bottom","layout","bottomY","max","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","w","x","minW","maxW","minH","maxH","moved","Boolean","static","isDraggable","isResizable","childrenEqual","a","b","isEqual","React","Children","map","fastRGLPropsEqual","fastPositionEqual","left","top","width","height","collides","l1","l2","compact","compactType","cols","compareWith","getStatics","sorted","sortLayoutItems","out","compactItem","push","indexOf","heightWidth","resolveCompactionCollision","item","moveToCoord","axis","sizeProp","otherItem","fullLayout","compactH","Math","min","getFirstCollision","correctBounds","bounds","collidesWith","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","log","String","oldX","oldY","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","compactV","fakeItem","undefined","perc","num","setTransform","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTopLeft","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","concat","sort","synchronizeLayoutWithChildren","initialLayout","children","forEach","child","exists","g","props","_grid","validateLayout","contextName","subProps","isArray","Error","j","verticalCompact","autoBindHandlers","el","fns","noop","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","mapToArray","result","size","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","hasOwn","classNames","classes","argType","inner","apply","join","default","DraggableCore","resetWarningCache","isRequired","bool","number","string","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","u","f","isNaN","parseInt","toUpperCase","document","documentElement","style","v","getOwnPropertyDescriptor","configurable","writable","O","S","D","parentNode","attachEvent","addEventListener","P","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","E","clientWidth","borderLeftWidth","borderRightWidth","T","paddingTop","paddingBottom","N","paddingLeft","paddingRight","C","M","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","body","classList","className","match","k","remove","selection","empty","getSelection","removeAllRanges","_","getOwnPropertyDescriptors","defineProperties","touchAction","X","Y","L","targetTouches","identifier","changedTouches","I","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","offsetParent","scale","R","state","lastX","deltaX","deltaY","lastY","A","findDOMNode","U","iterator","V","next","done","return","TypeError","W","B","setPrototypeOf","getPrototypeOf","__proto__","H","ReferenceError","q","G","z","start","move","stop","F","J","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","target","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","round","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","only","onTouchStart","onMouseUp","onTouchEnd","K","Q","assign","tt","et","st","nt","rt","ot","at","it","ut","dragged","slackX","slackY","$","right","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","defaultPosition","prevPropsPosition","isElementSVG","console","warn","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","Z","onDragStart","onDragStop","propTypes","defaultProps","calcGridColWidth","positionParams","margin","containerPadding","containerWidth","calcGridItemPosition","rowHeight","colWidth","resizing","Infinity","calcXY","maxRows","GridItem","newPosition","parentRect","clientRect","cLeft","transformScale","pLeft","cTop","pTop","getPositionParams","callbackData","onResizeHandler","nextProps","nextState","oldPosition","useCSSTransforms","prevProps","moveDroppingItem","droppingPosition","prevDroppingPosition","currentNode","ReactDOM","shouldDrag","pos","usePercentages","maxWidth","mins","maxes","minConstraints","maxConstraints","draggableOpts","onResizeStop","onResizeStart","onResize","handlerName","handler","calcWH","newChild","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","propName","autoSize","draggableCancel","draggableHandle","isDroppable","onLayoutChange","onDrop","droppingItem","isFirefox","navigator","userAgent","ReactGridLayout","context","activeDrag","mounted","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","layerX","layerY","calculatedPosition","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","find","prevState","newLayoutBase","propsLayout","onLayoutMaybeChanged","nbRow","containerPaddingY","placeholder","hasCollisions","leastX","leastY","Number","isFinite","isDroppingItem","draggable","resizable","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","ReactGridLayoutPropTypes","_react","_interopRequireDefault","_propTypes","_reactDraggable","_utils","obj","_extends","source","ownKeys","enumerableOnly","symbols","sym","_assertThisInitialized","_defineProperty","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","slackW","slackH","_proto","lockAspectRatio","aspectRatio","runConstraints","_ref","ratio","_ratio","oldW","oldH","_this$state","resizeHandler","_this2","_ref2","canDragX","canDragY","widthChanged","heightChanged","_this2$runConstraints","newState","persist","renderResizeHandle","resizeHandle","render","_this3","_this$props","resizeHandles","handleSize","excluded","sourceKeys","_objectWithoutPropertiesLoose","_objectSpread","ResizableBox","utils","Responsive","WidthProvider","webpackPolyfill","deprecate","paths","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","_Resizable","propsWidth","propsHeight","getDerivedStateFromProps","getIndentationValue","param","ResponsiveReactGridLayout","generateInitialState","colNo","onWidthChange","newBreakpoint","newCols","newLayouts","onBreakpointChange","lg","md","sm","xs","xxs","ComposedComponent","offsetWidth","onWindowResize","measureBeforeMount","rest"],"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\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { left: number, top: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\ntype FastRGLPropsEqual = (Object, Object, Function) => boolean;\nexport const fastRGLPropsEqual: FastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nexport function fastPositionEqual(a: Position, b: Position) {\n return (\n a.left === b.left &&\n a.top === b.top &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nexport function compactType(\n props: ?{ verticalCompact: boolean, compactType: CompactType }\n): CompactType {\n const { verticalCompact, compactType } = props || {};\n return verticalCompact === false ? null : compactType;\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport type { Position } from \"./utils\";\n\nexport type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};\n\n// Helper for generating column width\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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 {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\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 {Position} Object containing coords.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number\n): { x: number, y: number } {\n const { margin, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number\n): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n}\n","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { fastPositionEqual, perc, setTopLeft, setTransform } from \"./utils\";\nimport { calcGridItemPosition, calcXY, calcWH } from \"./calculateUtils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n let { x, y, w, h } = this.props;\n const oldPosition = calcGridItemPosition(\n this.getPositionParams(this.props),\n x,\n y,\n w,\n h,\n this.state\n );\n ({ x, y, w, h } = nextProps);\n const newPosition = calcGridItemPosition(\n this.getPositionParams(nextProps),\n x,\n y,\n w,\n h,\n nextState\n );\n return (\n !fastPositionEqual(oldPosition, newPosition) ||\n this.props.useCSSTransforms !== nextProps.useCSSTransforms\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const prevDroppingPosition = prevProps.droppingPosition;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevDroppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.left !== prevDroppingPosition.left) ||\n droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n getPositionParams(props: Props = this.props): PositionParams {\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(\n child: ReactElement,\n isDraggable: boolean\n ): ReactElement {\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(\n child: ReactElement,\n position: Position,\n isResizable: boolean\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0)\n .width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const { onDrag, transformScale } = this.props;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n onDrag &&\n onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, y, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = calcWH(\n this.getPositionParams(),\n size.width,\n size.height,\n x,\n y\n );\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = calcGridItemPosition(\n this.getPositionParams(),\n x,\n y,\n w,\n h,\n this.state\n );\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n\n return newChild;\n }\n}\n","// @flow\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nimport type { EventCallback, CompactType, Layout, LayoutItem } from \"./utils\";\n\nexport type Props = {|\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number,\n e: Event\n }) => void,\n children: ReactChildrenArray>\n|};\n\nexport default {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n};\n","// @flow\nimport React from \"react\";\n\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n getAllCollisions,\n compactType,\n noop,\n fastRGLPropsEqual\n} from \"./utils\";\n\nimport { calcXY } from \"./calculateUtils\";\n\nimport GridItem from \"./GridItem\";\nimport ReactGridLayoutPropTypes from \"./ReactGridLayoutPropTypes\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nimport type { Props } from \"./ReactGridLayoutPropTypes\";\n\n// End Types\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n // Refactored to another module to make way for preval\n static propTypes = ReactGridLayoutPropTypes;\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n !fastRGLPropsEqual(this.props, nextProps, isEqual) ||\n !isEqual(this.state.activeDrag, nextState.activeDrag)\n );\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n if (!this.state.activeDrag) return;\n\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable =\n typeof l.isDraggable === \"boolean\"\n ? l.isDraggable\n : !l.static && isDraggable;\n const resizable =\n typeof l.isResizable === \"boolean\"\n ? l.isResizable\n : !l.static && isResizable;\n\n return (\n \n {child}\n \n );\n }\n\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (\n isFirefox &&\n e.nativeEvent.target.className.indexOf(layoutClassName) === -1\n ) {\n return false;\n }\n\n const {\n droppingItem,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding\n } = this.props;\n const { layout } = this.state;\n // This is relative to the DOM element that this event fired for.\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { left: layerX, top: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n const positionParams: PositionParams = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n\n const calculatedPosition = calcXY(\n positionParams,\n layerY,\n layerX,\n droppingItem.w,\n droppingItem.h\n );\n\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const { left, top } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({ droppingPosition });\n }\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = (e: Event) => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h, e });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n deltaX /= _this2.props.transformScale;\n deltaY /= _this2.props.transformScale; // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n transformScale: _propTypes.default.number,\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {|\n ...React.ElementConfig,\n\n // Responsive config\n breakpoint?: ?Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n|};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: {\n lg: [0, 0],\n md: [0, 0],\n sm: [0, 0],\n xs: [0, 0],\n xxs: [0, 0]\n },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(prevProps);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(prevProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = this.props;\n const newBreakpoint =\n this.props.breakpoint ||\n getBreakpointFromWidth(this.props.breakpoints, this.props.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n const newLayouts = { ...layouts };\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n prevProps.breakpoints !== breakpoints ||\n prevProps.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts))\n newLayouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n newLayouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n this.props.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n this.props.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n this.props.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\n\ntype WPDefaultProps = {|\n measureBeforeMount: boolean\n|};\n\n// eslint-disable-next-line no-unused-vars\ntype WPProps = {|\n className?: string,\n style?: Object,\n ...WPDefaultProps\n|};\n\ntype WPState = {|\n width: number\n|};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\nexport default function WidthProvider(\n ComposedComponent: React.AbstractComponent\n): React.AbstractComponent<{|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n|}> {\n return class WidthProvider extends React.Component<\n {|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n |},\n WPState\n > {\n static defaultProps: WPDefaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 24d1128c1..57c97b968 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-grid-layout", - "version": "0.18.0", + "version": "0.18.1", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { @@ -98,4 +98,4 @@ "pre-commit": "lint-staged && make lint && make test" } } -} +} \ No newline at end of file From 42baa391ef2b99a983cc012d56d476dff7df990b Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 26 Feb 2020 09:56:31 -0500 Subject: [PATCH 080/101] fix(SCU): make shouldComponentUpdate shallowly compare children array. This means that shouldComponentUpdate will return `true` in almost all cases, unless the developer is careful to memoize it. A new "Performance" section has been added to the README to indicate this. --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- lib/GridItem.jsx | 22 ++++++++++++---------- lib/ReactGridLayout.jsx | 4 ++++ 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 9a42401eb..53b9e1323 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ RGL is React-only and does not require jQuery. - [Grid Layout Props](#grid-layout-props) - [Responsive Grid Layout Props](#responsive-grid-layout-props) - [Grid Item Props](#grid-item-props) -- [Users recipes](../../wiki/Users-recipes) +- [User Recipes](../../wiki/Users-recipes) +- [Performance](#performance) - [Contribute](#contribute) - [TODO List](#todo-list) @@ -443,6 +444,42 @@ will be draggable, even if the item is marked `static: true`. } ``` +### Performance + +`` has [an optimized `shouldComponentUpdate` implementation](lib/ReactGridLayout.jsx), but it relies on the user memoizing the `children` array: + + +```js +// lib/ReactGridLayout.jsx +// ... +shouldComponentUpdate(nextProps: Props, nextState: State) { + return ( + // NOTE: this is almost always unequal. Therefore the only way to get better performance + // from SCU is if the user intentionally memoizes children. If they do, and they can + // handle changes properly, performance will increase. + this.props.children !== nextProps.children || + !fastRGLPropsEqual(this.props, nextProps, isEqual) || + !isEqual(this.state.activeDrag, nextState.activeDrag) + ); +} +// ... +``` + +If you memoize your children, you can take advantage of this, and reap faster rerenders. For example: + +```js +function MyGrid() { + const children = React.useMemo((count) => { + return new Array(count).fill(undefined).map((val, idx) => { + return
    ; + }); + }, [props.count]); + return {children}; +} +``` + +Because the `children` prop doesn't change between rerenders, updates to `` won't result in new renders, improving performance. + ## Contribute If you have a feature request, please add it as an issue or make a pull request. diff --git a/lib/GridItem.jsx b/lib/GridItem.jsx index 932b4c60b..45ed865a6 100644 --- a/lib/GridItem.jsx +++ b/lib/GridItem.jsx @@ -179,22 +179,24 @@ export default class GridItem extends React.Component { currentNode: HTMLElement; shouldComponentUpdate(nextProps: Props, nextState: State) { - let { x, y, w, h } = this.props; + // We can't deeply compare children. If the developer memoizes them, we can + // use this optimization. + if (this.props.children !== nextProps.children) return true; + // TODO memoize these calculations so they don't take so long? const oldPosition = calcGridItemPosition( this.getPositionParams(this.props), - x, - y, - w, - h, + this.props.x, + this.props.y, + this.props.w, + this.props.h, this.state ); - ({ x, y, w, h } = nextProps); const newPosition = calcGridItemPosition( this.getPositionParams(nextProps), - x, - y, - w, - h, + nextProps.x, + nextProps.y, + nextProps.w, + nextProps.h, nextState ); return ( diff --git a/lib/ReactGridLayout.jsx b/lib/ReactGridLayout.jsx index e32f09e87..57a2a859f 100644 --- a/lib/ReactGridLayout.jsx +++ b/lib/ReactGridLayout.jsx @@ -197,6 +197,10 @@ export default class ReactGridLayout extends React.Component { shouldComponentUpdate(nextProps: Props, nextState: State) { return ( + // NOTE: this is almost always unequal. Therefore the only way to get better performance + // from SCU is if the user intentionally memoizes children. If they do, and they can + // handle changes properly, performance will increase. + this.props.children !== nextProps.children || !fastRGLPropsEqual(this.props, nextProps, isEqual) || !isEqual(this.state.activeDrag, nextState.activeDrag) ); From b108a7ce02363286c556831835bc2842a4c2b09f Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 26 Feb 2020 10:02:46 -0500 Subject: [PATCH 081/101] docs(example): indicate how to use toolbox --- examples/vars.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/vars.js b/examples/vars.js index 0b5ef4285..2556ae3b2 100644 --- a/examples/vars.js +++ b/examples/vars.js @@ -128,7 +128,7 @@ module.exports = [ title: "Toolbox", source: "toolbox", paragraphs: [ - "This demonstrates how to implement a toolbox to add and remove widgets." + "This demonstrates how to implement a toolbox to add and remove widgets. Click the 'X' on a widget to move it into the toolbox." ] }, { From 2bb6a26e231ee7322b2a3d98d529a3415829410a Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 26 Feb 2020 10:07:16 -0500 Subject: [PATCH 082/101] release 0.18.2 --- CHANGELOG.md | 10 ++++++++++ dist/react-grid-layout.min.js | 2 +- dist/react-grid-layout.min.js.map | 2 +- package.json | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ad757828..61c0993b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +0.18.2 (Feb 26, 2020) +---- + +### Bugfixes + - `shouldComponentUpdate`: + - A too-aggressive implementation of `shouldComponentUpdate` was shipped in 0.18.0-0.18.1 ([#1123](https://github.com/STRML/react-grid-layout/pull/1123)), which did not compare the `children` object. While this works well in many simple implementations of RGL, it breaks in more complex applications. + - Reference equality of `props.children` and `nextProps.children` is now added to `` and ``. If you wish to take advantage of the performance improvements from the `shouldComponentUpdate` work, memoize your children. + - A section has been added to the [README](/README.md#Performance) explaining how this works. + - Fixed [#1150](https://github.com/STRML/react-grid-layout/issues/1150), [#1151](https://github.com/STRML/react-grid-layout/issues/1151). + 0.18.1 (Feb 25, 2020) ---- diff --git a/dist/react-grid-layout.min.js b/dist/react-grid-layout.min.js index dba2274a9..7afb973ad 100644 --- a/dist/react-grid-layout.min.js +++ b/dist/react-grid-layout.min.js @@ -8,5 +8,5 @@ Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function M(t){return"both"===t.props.axis||"x"===t.props.axis}function L(t){return"both"===t.props.axis||"y"===t.props.axis}function N(t,e,n){var r="number"==typeof e?function(t,e){return t.targetTouches&&p(t.targetTouches,(function(t){return e===t.identifier}))||t.changedTouches&&p(t.changedTouches,(function(t){return e===t.identifier}))}(t,e):null;if("number"==typeof e&&!r)return null;var o=A(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function H(t,e,n){var r=t.state,o=!h(r.lastX),a=A(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function W(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function A(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function q(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!j(t.target,n.props.handle,e)||n.props.cancel&&j(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=N(t,o,U(n));if(null!=a){var i=a.x,s=a.y,c=H(U(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&C(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,$.move,n.handleDrag),x(r,$.stop,n.handleDragStop))}}})),F(U(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=B((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var p=H(U(n),i,s);if(!1!==n.props.onDrag(t,p))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(f)}}})),F(U(n),"handleDragStop",(function(t){if(n.state.dragging){var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r=e.x,o=e.y,a=H(U(n),r,o),i=u.a.findDOMNode(U(n));i&&n.props.enableUserSelectHack&&E(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(D(i.ownerDocument,$.move,n.handleDrag),D(i.ownerDocument,$.stop,n.handleDragStop))}}})),F(U(n),"onMouseDown",(function(t){return $=V,n.handleDragStart(t)})),F(U(n),"onMouseUp",(function(t){return $=V,n.handleDragStop(t)})),F(U(n),"onTouchStart",(function(t){return $=G,n.handleDragStart(t)})),F(U(n),"onTouchEnd",(function(t){return $=G,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&X(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;D(e,V.move,this.handleDrag),D(e,G.move,this.handleDrag),D(e,V.stop,this.handleDragStop),D(e,G.stop,this.handleDragStop),this.props.enableUserSelectHack&&E(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:T(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&q(n.prototype,r),e}();function K(t){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&at(t,e)}(e,o.a.Component),ot(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:tt({},n)}}}]),ot(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,p=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),f={},h=null,d=!Boolean(u)||this.state.dragging,y=u||r,g={x:M(this)&&d?this.state.x:y.x,y:L(this)&&d?this.state.y:y.y};this.state.isElementSVG?h=function(t,e){return k(t,e,"")}(g,c):f=function(t,e){var n=k(t,e,"px");return w({},b("transform",m),n)}(g,c);var v=l()(n.props.className||"",a,(it(t={},i,this.state.dragging),it(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:tt({},n.props.style,{},f),transform:h}))}}]),e}();it(st,"displayName","Draggable"),it(st,"propTypes",tt({},J.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),it(st,"defaultProps",tt({},J.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(3),i=n.n(a),s=n(6),u=n.n(s),c=n(1);function l(t){var e=t.margin,n=t.containerPadding,r=t.containerWidth,o=t.cols;return(r-e[0]*(o-1)-2*n[0])/o}function p(t,e,n,r,o,a){var i=t.margin,s=t.containerPadding,u=t.rowHeight,c=l(t),p={};return a&&a.resizing?(p.width=Math.round(a.resizing.width),p.height=Math.round(a.resizing.height)):(p.width=r===1/0?r:Math.round(c*r+Math.max(0,r-1)*i[0]),p.height=o===1/0?o:Math.round(u*o+Math.max(0,o-1)*i[1])),a&&a.dragging?(p.top=Math.round(a.dragging.top),p.left=Math.round(a.dragging.left)):(p.top=Math.round((u+i[1])*n+s[1]),p.left=Math.round((c+i[0])*e+s[0])),p}function f(t,e,n,r,o){var a=t.margin,i=t.cols,s=t.rowHeight,u=t.maxRows,c=l(t),p=Math.round((n-a[0])/(c+a[0])),f=Math.round((e-a[1])/(s+a[1]));return{x:p=Math.max(Math.min(p,i-r),0),y:f=Math.max(Math.min(f,u-o),0)}}var h=n(5),d=n.n(h),y=n(0),g=n.n(y),b=n(7),m=n(10);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:t.cols,containerPadding:t.containerPadding,containerWidth:t.containerWidth,margin:t.margin,maxRows:t.maxRows,rowHeight:t.rowHeight}}},{key:"createStyle",value:function(t){var e,n=this.props,r=n.usePercentages,o=n.containerWidth;return n.useCSSTransforms?e=Object(c.setTransform)(t):(e=Object(c.setTopLeft)(t),r&&(e.left=Object(c.perc)(t.left/o),e.width=Object(c.perc)(t.width/o))),e}},{key:"mixinDraggable",value:function(t,e){return o.a.createElement(b.DraggableCore,{disabled:!e,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale},t)}},{key:"mixinResizable",value:function(t,e,n){var r=this.props,a=r.cols,i=r.x,s=r.minW,u=r.minH,c=r.maxW,l=r.maxH,f=r.transformScale,h=this.getPositionParams(),d=p(h,0,0,a-i,0).width,y=p(h,0,0,s,u),g=p(h,0,0,c,l),b=[y.width,y.height],v=[Math.min(g.width,d),Math.min(g.height,1/0)];return o.a.createElement(m.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:e.width,height:e.height,minConstraints:b,maxConstraints:v,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f},t)}},{key:"onResizeHandler",value:function(t,e,n){var r=e.node,o=e.size,a=this.props[n];if(a){var i=this.props,s=i.cols,u=i.x,c=i.y,p=i.i,f=i.maxW,h=i.minW,d=i.maxH,y=i.minH,g=function(t,e,n,r,o){var a=t.margin,i=t.maxRows,s=t.cols,u=t.rowHeight,c=l(t),p=Math.round((e+a[0])/(c+a[0])),f=Math.round((n+a[1])/(u+a[1]));return{w:p=Math.max(Math.min(p,s-r),0),h:f=Math.max(Math.min(f,i-o),0)}}(this.getPositionParams(),o.width,o.height,u,c),b=g.w,m=g.h;b=Math.min(b,s-u),b=Math.max(b,1),b=Math.max(Math.min(b,f),h),m=Math.max(Math.min(m,d),y),this.setState({resizing:"onResizeStop"===n?null:o}),a.call(this,p,b,m,{e:t,node:r,size:o})}}},{key:"render",value:function(){var t=this.props,e=t.x,n=t.y,r=t.w,a=t.h,i=t.isDraggable,s=t.isResizable,c=t.droppingPosition,l=t.useCSSTransforms,f=p(this.getPositionParams(),e,n,r,a,this.state),h=o.a.Children.only(this.props.children),d=o.a.cloneElement(h,{className:u()("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(c),cssTransforms:l}),style:O({},this.props.style,{},h.props.style,{},this.createStyle(f))});return d=this.mixinResizable(d,f,s),d=this.mixinDraggable(d,i)}}])&&j(n.prototype,r),a&&j(n,a),e}(o.a.Component);R(z,"propTypes",{children:g.a.element,cols:g.a.number.isRequired,containerWidth:g.a.number.isRequired,rowHeight:g.a.number.isRequired,margin:g.a.array.isRequired,maxRows:g.a.number.isRequired,containerPadding:g.a.array.isRequired,x:g.a.number.isRequired,y:g.a.number.isRequired,w:g.a.number.isRequired,h:g.a.number.isRequired,minW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("minWidth not Number"):n>t.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>h.x&&(g=Math.min(g,t.x)),t.y>h.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(h.w=g-h.x),Number.isFinite(b)&&(h.h=b-h.y)}}d||(h.w=e,h.h=n);var m={w:h.w,h:h.h,x:h.x,y:h.y,static:!0,i:t};this.props.onResize(s,u,h,m,o,a),this.setState({layout:Object(c.compact)(s,Object(c.compactType)(this.props),p),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,u=i.oldResizeItem,l=this.props.cols,p=Object(c.getLayoutItem)(s,t);this.props.onResizeStop(s,u,p,null,o,a);var f=Object(c.compact)(s,Object(c.compactType)(this.props),l),h=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,h)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,u=e.maxRows,c=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(z,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:c,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(c.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,u=r.containerPadding,l=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,d=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,w=m.droppingPosition,O="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,S="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h;return o.a.createElement(z,{containerWidth:a,cols:i,margin:s,containerPadding:u||s,maxRows:p,rowHeight:l,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:O,isResizable:S,useCSSTransforms:d&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?w:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=u()("react-grid-layout",n),s=T({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:c.noop,onDragLeave:a?this.onDragLeave:c.noop,onDragEnter:a?this.onDragEnter:c.noop,onDragOver:a?this.onDragOver:c.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&L(n.prototype,r),a&&L(n,a),e}(o.a.Component);A(B,"displayName","ReactGridLayout"),A(B,"propTypes",k),A(B,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:c.noop,onDragStart:c.noop,onDrag:c.noop,onDragStop:c.noop,onResizeStart:c.noop,onResize:c.noop,onResizeStop:c.noop,onDrop:c.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(17);function s(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"])),f=l.className?l.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:u,minConstraints:c,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:h},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},d)))},o}(r.default.Component);e.default=l,c(l,"propTypes",{height:o.default.number,width:o.default.number}),c(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return D}));var r=n(2),o=n(0),a=n.n(o),i=n(3),s=n.n(i),u=n(1),c=n(4),l=n(8);function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(){return(f=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var e=window.document.documentElement.style;if(t in e)return"";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function M(t){return"both"===t.props.axis||"x"===t.props.axis}function L(t){return"both"===t.props.axis||"y"===t.props.axis}function N(t,e,n){var r="number"==typeof e?function(t,e){return t.targetTouches&&p(t.targetTouches,(function(t){return e===t.identifier}))||t.changedTouches&&p(t.changedTouches,(function(t){return e===t.identifier}))}(t,e):null;if("number"==typeof e&&!r)return null;var o=A(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function H(t,e,n){var r=t.state,o=!h(r.lastX),a=A(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function W(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function A(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function B(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function q(t,e){for(var n=0;n not mounted on DragStart!");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!j(t.target,n.props.handle,e)||n.props.cancel&&j(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=N(t,o,U(n));if(null!=a){var i=a.x,s=a.y,c=H(U(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&C(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,$.move,n.handleDrag),x(r,$.stop,n.handleDragStop))}}})),F(U(n),"handleDrag",(function(t){"touchmove"===t.type&&t.preventDefault();var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=B((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var p=H(U(n),i,s);if(!1!==n.props.onDrag(t,p))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(f)}}})),F(U(n),"handleDragStop",(function(t){if(n.state.dragging){var e=N(t,n.state.touchIdentifier,U(n));if(null!=e){var r=e.x,o=e.y,a=H(U(n),r,o),i=u.a.findDOMNode(U(n));i&&n.props.enableUserSelectHack&&E(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(D(i.ownerDocument,$.move,n.handleDrag),D(i.ownerDocument,$.stop,n.handleDragStop))}}})),F(U(n),"onMouseDown",(function(t){return $=V,n.handleDragStart(t)})),F(U(n),"onMouseUp",(function(t){return $=V,n.handleDragStop(t)})),F(U(n),"onTouchStart",(function(t){return $=G,n.handleDragStart(t)})),F(U(n),"onTouchEnd",(function(t){return $=G,n.handleDragStop(t)})),n}var n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&X(t,e)}(e,o.a.Component),n=e,(r=[{key:"componentWillUnmount",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;D(e,V.move,this.handleDrag),D(e,G.move,this.handleDrag),D(e,V.stop,this.handleDragStop),D(e,G.stop,this.handleDragStop),this.props.enableUserSelectHack&&E(e)}}},{key:"render",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:T(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&q(n.prototype,r),e}();function K(t){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&at(t,e)}(e,o.a.Component),ot(e,null,[{key:"getDerivedStateFromProps",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:tt({},n)}}}]),ot(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,p=(e.scale,function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(e,["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"])),f={},h=null,d=!Boolean(u)||this.state.dragging,y=u||r,g={x:M(this)&&d?this.state.x:y.x,y:L(this)&&d?this.state.y:y.y};this.state.isElementSVG?h=function(t,e){return k(t,e,"")}(g,c):f=function(t,e){var n=k(t,e,"px");return w({},b("transform",m),n)}(g,c);var v=l()(n.props.className||"",a,(it(t={},i,this.state.dragging),it(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:tt({},n.props.style,{},f),transform:h}))}}]),e}();it(st,"displayName","Draggable"),it(st,"propTypes",tt({},J.propTypes,{axis:i.a.oneOf(["both","x","y","none"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),it(st,"defaultProps",tt({},J.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}))}]))},function(t,e,n){"use strict";n.r(e);var r=n(2),o=n.n(r),a=n(3),i=n.n(a),s=n(6),u=n.n(s),c=n(1);function l(t){var e=t.margin,n=t.containerPadding,r=t.containerWidth,o=t.cols;return(r-e[0]*(o-1)-2*n[0])/o}function p(t,e,n,r,o,a){var i=t.margin,s=t.containerPadding,u=t.rowHeight,c=l(t),p={};return a&&a.resizing?(p.width=Math.round(a.resizing.width),p.height=Math.round(a.resizing.height)):(p.width=r===1/0?r:Math.round(c*r+Math.max(0,r-1)*i[0]),p.height=o===1/0?o:Math.round(u*o+Math.max(0,o-1)*i[1])),a&&a.dragging?(p.top=Math.round(a.dragging.top),p.left=Math.round(a.dragging.left)):(p.top=Math.round((u+i[1])*n+s[1]),p.left=Math.round((c+i[0])*e+s[0])),p}function f(t,e,n,r,o){var a=t.margin,i=t.cols,s=t.rowHeight,u=t.maxRows,c=l(t),p=Math.round((n-a[0])/(c+a[0])),f=Math.round((e-a[1])/(s+a[1]));return{x:p=Math.max(Math.min(p,i-r),0),y:f=Math.max(Math.min(f,u-o),0)}}var h=n(5),d=n.n(h),y=n(0),g=n.n(y),b=n(7),m=n(10);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:t.cols,containerPadding:t.containerPadding,containerWidth:t.containerWidth,margin:t.margin,maxRows:t.maxRows,rowHeight:t.rowHeight}}},{key:"createStyle",value:function(t){var e,n=this.props,r=n.usePercentages,o=n.containerWidth;return n.useCSSTransforms?e=Object(c.setTransform)(t):(e=Object(c.setTopLeft)(t),r&&(e.left=Object(c.perc)(t.left/o),e.width=Object(c.perc)(t.width/o))),e}},{key:"mixinDraggable",value:function(t,e){return o.a.createElement(b.DraggableCore,{disabled:!e,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale},t)}},{key:"mixinResizable",value:function(t,e,n){var r=this.props,a=r.cols,i=r.x,s=r.minW,u=r.minH,c=r.maxW,l=r.maxH,f=r.transformScale,h=this.getPositionParams(),d=p(h,0,0,a-i,0).width,y=p(h,0,0,s,u),g=p(h,0,0,c,l),b=[y.width,y.height],v=[Math.min(g.width,d),Math.min(g.height,1/0)];return o.a.createElement(m.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:e.width,height:e.height,minConstraints:b,maxConstraints:v,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f},t)}},{key:"onResizeHandler",value:function(t,e,n){var r=e.node,o=e.size,a=this.props[n];if(a){var i=this.props,s=i.cols,u=i.x,c=i.y,p=i.i,f=i.maxW,h=i.minW,d=i.maxH,y=i.minH,g=function(t,e,n,r,o){var a=t.margin,i=t.maxRows,s=t.cols,u=t.rowHeight,c=l(t),p=Math.round((e+a[0])/(c+a[0])),f=Math.round((n+a[1])/(u+a[1]));return{w:p=Math.max(Math.min(p,s-r),0),h:f=Math.max(Math.min(f,i-o),0)}}(this.getPositionParams(),o.width,o.height,u,c),b=g.w,m=g.h;b=Math.min(b,s-u),b=Math.max(b,1),b=Math.max(Math.min(b,f),h),m=Math.max(Math.min(m,d),y),this.setState({resizing:"onResizeStop"===n?null:o}),a.call(this,p,b,m,{e:t,node:r,size:o})}}},{key:"render",value:function(){var t=this.props,e=t.x,n=t.y,r=t.w,a=t.h,i=t.isDraggable,s=t.isResizable,c=t.droppingPosition,l=t.useCSSTransforms,f=p(this.getPositionParams(),e,n,r,a,this.state),h=o.a.Children.only(this.props.children),d=o.a.cloneElement(h,{className:u()("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(c),cssTransforms:l}),style:O({},this.props.style,{},h.props.style,{},this.createStyle(f))});return d=this.mixinResizable(d,f,s),d=this.mixinDraggable(d,i)}}])&&j(n.prototype,r),a&&j(n,a),e}(o.a.Component);R(z,"propTypes",{children:g.a.element,cols:g.a.number.isRequired,containerWidth:g.a.number.isRequired,rowHeight:g.a.number.isRequired,margin:g.a.array.isRequired,maxRows:g.a.number.isRequired,containerPadding:g.a.array.isRequired,x:g.a.number.isRequired,y:g.a.number.isRequired,w:g.a.number.isRequired,h:g.a.number.isRequired,minW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("minWidth not Number"):n>t.w||n>t.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxWidth not Number"):nt.h||n>t.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(t,e){var n=t[e];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,b=1/0;y.forEach((function(t){t.x>h.x&&(g=Math.min(g,t.x)),t.y>h.y&&(b=Math.min(b,t.y))})),Number.isFinite(g)&&(h.w=g-h.x),Number.isFinite(b)&&(h.h=b-h.y)}}d||(h.w=e,h.h=n);var m={w:h.w,h:h.h,x:h.x,y:h.y,static:!0,i:t};this.props.onResize(s,u,h,m,o,a),this.setState({layout:Object(c.compact)(s,Object(c.compactType)(this.props),p),activeDrag:m})}}},{key:"onResizeStop",value:function(t,e,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,u=i.oldResizeItem,l=this.props.cols,p=Object(c.getLayoutItem)(s,t);this.props.onResizeStop(s,u,p,null,o,a);var f=Object(c.compact)(s,Object(c.compactType)(this.props),l),h=this.state.oldLayout;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(f,h)}},{key:"placeholder",value:function(){var t=this.state.activeDrag;if(!t)return null;var e=this.props,n=e.width,r=e.cols,a=e.margin,i=e.containerPadding,s=e.rowHeight,u=e.maxRows,c=e.useCSSTransforms,l=e.transformScale;return o.a.createElement(z,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:i||a,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,useCSSTransforms:c,transformScale:l},o.a.createElement("div",null))}},{key:"processGridItem",value:function(t,e){if(t&&t.key){var n=Object(c.getLayoutItem)(this.state.layout,String(t.key));if(!n)return null;var r=this.props,a=r.width,i=r.cols,s=r.margin,u=r.containerPadding,l=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,d=r.useCSSTransforms,y=r.transformScale,g=r.draggableCancel,b=r.draggableHandle,m=this.state,v=m.mounted,w=m.droppingPosition,O="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,S="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h;return o.a.createElement(z,{containerWidth:a,cols:i,margin:s,containerPadding:u||s,maxRows:p,rowHeight:l,cancel:g,handle:b,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:O,isResizable:S,useCSSTransforms:d&&v,usePercentages:!v,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:e?w:void 0},t)}}},{key:"render",value:function(){var t=this,e=this.props,n=e.className,r=e.style,a=e.isDroppable,i=u()("react-grid-layout",n),s=T({height:this.containerHeight()},r);return o.a.createElement("div",{className:i,style:s,onDrop:a?this.onDrop:c.noop,onDragLeave:a?this.onDragLeave:c.noop,onDragEnter:a?this.onDragEnter:c.noop,onDragOver:a?this.onDragOver:c.noop},o.a.Children.map(this.props.children,(function(e){return t.processGridItem(e)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&L(n.prototype,r),a&&L(n,a),e}(o.a.Component);A(B,"displayName","ReactGridLayout"),A(B,"propTypes",k),A(B,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},onLayoutChange:c.noop,onDragStart:c.noop,onDrag:c.noop,onDragStop:c.noop,onResizeStart:c.noop,onResize:c.noop,onResizeStop:c.noop,onDrop:c.noop})},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=s(n(2)),o=s(n(0)),a=n(7),i=n(17);function s(t){return t&&t.__esModule?t:{default:t}}function u(){return(u=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(e,["children","draggableOpts","width","height","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"])),f=l.className?l.className+" react-resizable":"react-resizable";return(0,i.cloneElement)(n,function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles"]);return r.default.createElement(a.default,{handle:e,handleSize:n,width:this.state.width,height:this.state.height,onResizeStart:o,onResize:this.onResize,onResizeStop:i,draggableOpts:u,minConstraints:c,maxConstraints:l,lockAspectRatio:p,axis:f,resizeHandles:h},r.default.createElement("div",s({style:{width:this.state.width+"px",height:this.state.height+"px"}},d)))},o}(r.default.Component);e.default=l,c(l,"propTypes",{height:o.default.number,width:o.default.number}),c(l,"defaultProps",{handleSize:[20,20]})},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return D}));var r=n(2),o=n(0),a=n.n(o),i=n(3),s=n.n(i),u=n(1),c=n(4),l=n(8);function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(){return(f=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){for(var n=0;n;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { left: number, top: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\ntype FastRGLPropsEqual = (Object, Object, Function) => boolean;\nexport const fastRGLPropsEqual: FastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nexport function fastPositionEqual(a: Position, b: Position) {\n return (\n a.left === b.left &&\n a.top === b.top &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nexport function compactType(\n props: ?{ verticalCompact: boolean, compactType: CompactType }\n): CompactType {\n const { verticalCompact, compactType } = props || {};\n return verticalCompact === false ? null : compactType;\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport type { Position } from \"./utils\";\n\nexport type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};\n\n// Helper for generating column width\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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 {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\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 {Position} Object containing coords.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number\n): { x: number, y: number } {\n const { margin, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number\n): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n}\n","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { fastPositionEqual, perc, setTopLeft, setTransform } from \"./utils\";\nimport { calcGridItemPosition, calcXY, calcWH } from \"./calculateUtils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n let { x, y, w, h } = this.props;\n const oldPosition = calcGridItemPosition(\n this.getPositionParams(this.props),\n x,\n y,\n w,\n h,\n this.state\n );\n ({ x, y, w, h } = nextProps);\n const newPosition = calcGridItemPosition(\n this.getPositionParams(nextProps),\n x,\n y,\n w,\n h,\n nextState\n );\n return (\n !fastPositionEqual(oldPosition, newPosition) ||\n this.props.useCSSTransforms !== nextProps.useCSSTransforms\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const prevDroppingPosition = prevProps.droppingPosition;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevDroppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.left !== prevDroppingPosition.left) ||\n droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n getPositionParams(props: Props = this.props): PositionParams {\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(\n child: ReactElement,\n isDraggable: boolean\n ): ReactElement {\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(\n child: ReactElement,\n position: Position,\n isResizable: boolean\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0)\n .width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const { onDrag, transformScale } = this.props;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n onDrag &&\n onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, y, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = calcWH(\n this.getPositionParams(),\n size.width,\n size.height,\n x,\n y\n );\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = calcGridItemPosition(\n this.getPositionParams(),\n x,\n y,\n w,\n h,\n this.state\n );\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n\n return newChild;\n }\n}\n","// @flow\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nimport type { EventCallback, CompactType, Layout, LayoutItem } from \"./utils\";\n\nexport type Props = {|\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number,\n e: Event\n }) => void,\n children: ReactChildrenArray>\n|};\n\nexport default {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n};\n","// @flow\nimport React from \"react\";\n\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n getAllCollisions,\n compactType,\n noop,\n fastRGLPropsEqual\n} from \"./utils\";\n\nimport { calcXY } from \"./calculateUtils\";\n\nimport GridItem from \"./GridItem\";\nimport ReactGridLayoutPropTypes from \"./ReactGridLayoutPropTypes\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nimport type { Props } from \"./ReactGridLayoutPropTypes\";\n\n// End Types\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n // Refactored to another module to make way for preval\n static propTypes = ReactGridLayoutPropTypes;\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n !fastRGLPropsEqual(this.props, nextProps, isEqual) ||\n !isEqual(this.state.activeDrag, nextState.activeDrag)\n );\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n if (!this.state.activeDrag) return;\n\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable =\n typeof l.isDraggable === \"boolean\"\n ? l.isDraggable\n : !l.static && isDraggable;\n const resizable =\n typeof l.isResizable === \"boolean\"\n ? l.isResizable\n : !l.static && isResizable;\n\n return (\n \n {child}\n \n );\n }\n\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (\n isFirefox &&\n e.nativeEvent.target.className.indexOf(layoutClassName) === -1\n ) {\n return false;\n }\n\n const {\n droppingItem,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding\n } = this.props;\n const { layout } = this.state;\n // This is relative to the DOM element that this event fired for.\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { left: layerX, top: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n const positionParams: PositionParams = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n\n const calculatedPosition = calcXY(\n positionParams,\n layerY,\n layerX,\n droppingItem.w,\n droppingItem.h\n );\n\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const { left, top } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({ droppingPosition });\n }\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = (e: Event) => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h, e });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n deltaX /= _this2.props.transformScale;\n deltaY /= _this2.props.transformScale; // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n transformScale: _propTypes.default.number,\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {|\n ...React.ElementConfig,\n\n // Responsive config\n breakpoint?: ?Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n|};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: {\n lg: [0, 0],\n md: [0, 0],\n sm: [0, 0],\n xs: [0, 0],\n xxs: [0, 0]\n },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(prevProps);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(prevProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = this.props;\n const newBreakpoint =\n this.props.breakpoint ||\n getBreakpointFromWidth(this.props.breakpoints, this.props.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n const newLayouts = { ...layouts };\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n prevProps.breakpoints !== breakpoints ||\n prevProps.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts))\n newLayouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n newLayouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n this.props.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n this.props.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n this.props.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\n\ntype WPDefaultProps = {|\n measureBeforeMount: boolean\n|};\n\n// eslint-disable-next-line no-unused-vars\ntype WPProps = {|\n className?: string,\n style?: Object,\n ...WPDefaultProps\n|};\n\ntype WPState = {|\n width: number\n|};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\nexport default function WidthProvider(\n ComposedComponent: React.AbstractComponent\n): React.AbstractComponent<{|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n|}> {\n return class WidthProvider extends React.Component<\n {|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n |},\n WPState\n > {\n static defaultProps: WPDefaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://ReactGridLayout/webpack/universalModuleDefinition","webpack://ReactGridLayout/webpack/bootstrap","webpack://ReactGridLayout/./node_modules/prop-types/index.js","webpack://ReactGridLayout/./lib/utils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://ReactGridLayout/./node_modules/lodash.isequal/index.js","webpack://ReactGridLayout/./lib/responsiveUtils.js","webpack://ReactGridLayout/external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack://ReactGridLayout/./node_modules/classnames/index.js","webpack://ReactGridLayout/./node_modules/react-draggable/build/web/react-draggable.min.js","webpack://ReactGridLayout/./lib/calculateUtils.js","webpack://ReactGridLayout/./lib/GridItem.jsx","webpack://ReactGridLayout/./lib/ReactGridLayoutPropTypes.js","webpack://ReactGridLayout/./lib/ReactGridLayout.jsx","webpack://ReactGridLayout/./node_modules/react-resizable/build/Resizable.js","webpack://ReactGridLayout/./node_modules/react-resizable/index.js","webpack://ReactGridLayout/./index-dev.js","webpack://ReactGridLayout/(webpack)/buildin/global.js","webpack://ReactGridLayout/(webpack)/buildin/module.js","webpack://ReactGridLayout/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactGridLayout/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/utils.js","webpack://ReactGridLayout/./node_modules/react-resizable/build/ResizableBox.js","webpack://ReactGridLayout/./lib/ResponsiveReactGridLayout.jsx","webpack://ReactGridLayout/./lib/components/WidthProvider.jsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","bottom","layout","bottomY","max","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","w","x","minW","maxW","minH","maxH","moved","Boolean","static","isDraggable","isResizable","childrenEqual","a","b","isEqual","React","Children","map","fastRGLPropsEqual","fastPositionEqual","left","top","width","height","collides","l1","l2","compact","compactType","cols","compareWith","getStatics","sorted","sortLayoutItems","out","compactItem","push","indexOf","heightWidth","resolveCompactionCollision","item","moveToCoord","axis","sizeProp","otherItem","fullLayout","compactH","Math","min","getFirstCollision","correctBounds","bounds","collidesWith","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","log","String","oldX","oldY","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","compactV","fakeItem","undefined","perc","num","setTransform","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTopLeft","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","concat","sort","synchronizeLayoutWithChildren","initialLayout","children","forEach","child","exists","g","props","_grid","validateLayout","contextName","subProps","isArray","Error","j","verticalCompact","autoBindHandlers","el","fns","noop","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","self","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","mapToArray","result","size","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","Uint8Array","propertyIsEnumerable","splice","symToStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","has","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","arguments","isLength","baseUnary","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","hasOwn","classNames","classes","argType","inner","apply","join","default","DraggableCore","resetWarningCache","isRequired","bool","number","string","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","u","f","isNaN","parseInt","toUpperCase","document","documentElement","style","v","getOwnPropertyDescriptor","configurable","writable","O","S","D","parentNode","attachEvent","addEventListener","P","detachEvent","removeEventListener","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","E","clientWidth","borderLeftWidth","borderRightWidth","T","paddingTop","paddingBottom","N","paddingLeft","paddingRight","C","M","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","body","classList","className","match","k","remove","selection","empty","getSelection","removeAllRanges","_","getOwnPropertyDescriptors","defineProperties","touchAction","X","Y","L","targetTouches","identifier","changedTouches","I","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","offsetParent","scale","R","state","lastX","deltaX","deltaY","lastY","A","findDOMNode","U","iterator","V","next","done","return","TypeError","W","B","setPrototypeOf","getPrototypeOf","__proto__","H","ReferenceError","q","G","z","start","move","stop","F","J","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","target","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","round","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","only","onTouchStart","onMouseUp","onTouchEnd","K","Q","assign","tt","et","st","nt","rt","ot","at","it","ut","dragged","slackX","slackY","$","right","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","defaultPosition","prevPropsPosition","isElementSVG","console","warn","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","Z","onDragStart","onDragStop","propTypes","defaultProps","calcGridColWidth","positionParams","margin","containerPadding","containerWidth","calcGridItemPosition","rowHeight","colWidth","resizing","Infinity","calcXY","maxRows","GridItem","newPosition","parentRect","clientRect","cLeft","transformScale","pLeft","cTop","pTop","getPositionParams","callbackData","onResizeHandler","nextProps","nextState","oldPosition","useCSSTransforms","prevProps","moveDroppingItem","droppingPosition","prevDroppingPosition","currentNode","ReactDOM","shouldDrag","pos","usePercentages","maxWidth","mins","maxes","minConstraints","maxConstraints","draggableOpts","onResizeStop","onResizeStart","onResize","handlerName","handler","calcWH","newChild","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","propName","autoSize","draggableCancel","draggableHandle","isDroppable","onLayoutChange","onDrop","droppingItem","isFirefox","navigator","userAgent","ReactGridLayout","context","activeDrag","mounted","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","layerX","layerY","calculatedPosition","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","find","prevState","newLayoutBase","propsLayout","onLayoutMaybeChanged","nbRow","containerPaddingY","placeholder","hasCollisions","leastX","leastY","Number","isFinite","isDroppingItem","draggable","resizable","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","ReactGridLayoutPropTypes","_react","_interopRequireDefault","_propTypes","_reactDraggable","_utils","obj","_extends","source","ownKeys","enumerableOnly","symbols","sym","_assertThisInitialized","_defineProperty","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","slackW","slackH","_proto","lockAspectRatio","aspectRatio","runConstraints","_ref","ratio","_ratio","oldW","oldH","_this$state","resizeHandler","_this2","_ref2","canDragX","canDragY","widthChanged","heightChanged","_this2$runConstraints","newState","persist","renderResizeHandle","resizeHandle","render","_this3","_this$props","resizeHandles","handleSize","excluded","sourceKeys","_objectWithoutPropertiesLoose","_objectSpread","ResizableBox","utils","Responsive","WidthProvider","webpackPolyfill","deprecate","paths","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","_Resizable","propsWidth","propsHeight","getDerivedStateFromProps","getIndentationValue","param","ResponsiveReactGridLayout","generateInitialState","colNo","onWidthChange","newBreakpoint","newCols","newLayouts","onBreakpointChange","lg","md","sm","xs","xxs","ComposedComponent","offsetWidth","onWindowResize","measureBeforeMount","rest"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,SAAUA,QAAQ,cAC1B,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,QAAS,aAAcJ,GACL,iBAAZC,QACdA,QAAyB,gBAAID,EAAQG,QAAQ,SAAUA,QAAQ,cAE/DJ,EAAsB,gBAAIC,EAAQD,EAAY,MAAGA,EAAe,UARlE,CASGO,QAAQ,SAASC,EAAgCC,GACpD,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUV,QAGnC,IAAIC,EAASO,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHZ,QAAS,IAUV,OANAa,EAAQH,GAAUI,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASS,GAG/DR,EAAOW,GAAI,EAGJX,EAAOD,QA0Df,OArDAS,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASjB,EAASkB,EAAMC,GAC3CV,EAAoBW,EAAEpB,EAASkB,IAClCG,OAAOC,eAAetB,EAASkB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAASzB,GACX,oBAAX0B,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAetB,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAetB,EAAS,aAAc,CAAE4B,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAASnC,GAChC,IAAIkB,EAASlB,GAAUA,EAAO8B,WAC7B,WAAwB,OAAO9B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAQ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,I,kBCjEnDzC,EAAOD,QAAU,EAAQ,GAAR,I,+oDCgEZ,SAAS2C,EAAOC,GAGrB,IAFA,IACEC,EADEC,EAAM,EAEDnC,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,KAC5CkC,EAAUD,EAAOjC,GAAGsC,EAAIL,EAAOjC,GAAGuC,GACpBJ,IAAKA,EAAMD,GAE3B,OAAOC,EAGF,SAASK,EAAYP,GAE1B,IADA,IAAMQ,EAAYC,MAAMT,EAAOI,QACtBrC,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,IAC5CyC,EAAUzC,GAAK2C,EAAgBV,EAAOjC,IAExC,OAAOyC,EAIF,SAASE,EAAgBC,GAC9B,MAAO,CACLC,EAAGD,EAAWC,EACdN,EAAGK,EAAWL,EACdO,EAAGF,EAAWE,EACdR,EAAGM,EAAWN,EACdtC,EAAG4C,EAAW5C,EACd+C,KAAMH,EAAWG,KACjBC,KAAMJ,EAAWI,KACjBC,KAAML,EAAWK,KACjBC,KAAMN,EAAWM,KACjBC,MAAOC,QAAQR,EAAWO,OAC1BE,OAAQD,QAAQR,EAAWS,QAE3BC,YAAaV,EAAWU,YACxBC,YAAaX,EAAWW,aAQrB,SAASC,EAAcC,EAAkBC,GAC9C,OAAOC,IACLC,IAAMC,SAASC,IAAIL,GAAG,SAAApD,GAAC,OAAIA,EAAEkB,OAC7BqC,IAAMC,SAASC,IAAIJ,GAAG,SAAArD,GAAC,OAAIA,EAAEkB,QAa1B,IAAMwC,EAAuCxE,EAAQ,IAGrD,SAASyE,EAAkBP,EAAaC,GAC7C,OACED,EAAEQ,OAASP,EAAEO,MACbR,EAAES,MAAQR,EAAEQ,KACZT,EAAEU,QAAUT,EAAES,OACdV,EAAEW,SAAWV,EAAEU,OAOZ,SAASC,EAASC,EAAgBC,GACvC,OAAID,EAAGtE,IAAMuE,EAAGvE,MACZsE,EAAGxB,EAAIwB,EAAGzB,GAAK0B,EAAGzB,OAClBwB,EAAGxB,GAAKyB,EAAGzB,EAAIyB,EAAG1B,OAClByB,EAAGhC,EAAIgC,EAAG/B,GAAKgC,EAAGjC,MAClBgC,EAAGhC,GAAKiC,EAAGjC,EAAIiC,EAAGhC,MAajB,SAASiC,EACdvC,EACAwC,EACAC,GASA,IANA,IAAMC,EAAcC,EAAW3C,GAEzB4C,EAASC,EAAgB7C,EAAQwC,GAEjCM,EAAMrC,MAAMT,EAAOI,QAEhBrC,EAAI,EAAGoC,EAAMyC,EAAOxC,OAAQrC,EAAIoC,EAAKpC,IAAK,CACjD,IAAIC,EAAI0C,EAAgBkC,EAAO7E,IAG1BC,EAAEoD,SACLpD,EAAI+E,EAAYL,EAAa1E,EAAGwE,EAAaC,EAAMG,GAInDF,EAAYM,KAAKhF,IAInB8E,EAAI9C,EAAOiD,QAAQL,EAAO7E,KAAOC,EAGjCA,EAAEkD,OAAQ,EAGZ,OAAO4B,EAGT,IAAMI,EAAc,CAAErC,EAAG,IAAKR,EAAG,KAIjC,SAAS8C,EACPnD,EACAoD,EACAC,EACAC,GAEA,IAAMC,EAAWL,EAAYI,GAC7BF,EAAKE,IAAS,EAQd,IAPA,IAOSvF,EAPSiC,EACf6B,KAAI,SAAAlB,GACH,OAAOA,EAAW5C,KAEnBkF,QAAQG,EAAKrF,GAGS,EAAGA,EAAIiC,EAAOI,OAAQrC,IAAK,CAClD,IAAMyF,EAAYxD,EAAOjC,GAEzB,IAAIyF,EAAUpC,OAAd,CAIA,GAAIoC,EAAUnD,EAAI+C,EAAK/C,EAAI+C,EAAK9C,EAAG,MAE/B8B,EAASgB,EAAMI,IACjBL,EACEnD,EACAwD,EACAH,EAAcD,EAAKG,GACnBD,IAKNF,EAAKE,GAAQD,EAMR,SAASN,EACdL,EACA1E,EACAwE,EACAC,EACAgB,GAEA,IAoBIrB,EAnBEsB,EAA2B,eAAhBlB,EACjB,GAFiC,aAAhBA,EAQf,IAFAxE,EAAEqC,EAAIsD,KAAKC,IAAI7D,EAAO2C,GAAc1E,EAAEqC,GAE/BrC,EAAEqC,EAAI,IAAMwD,EAAkBnB,EAAa1E,IAChDA,EAAEqC,SAEC,GAAIqD,EAGT,IAFA1F,EAAEqC,EAAIsD,KAAKC,IAAI7D,EAAO2C,GAAc1E,EAAEqC,GAE/BrC,EAAE6C,EAAI,IAAMgD,EAAkBnB,EAAa1E,IAChDA,EAAE6C,IAMN,KAAQuB,EAAWyB,EAAkBnB,EAAa1E,IAC5C0F,EACFP,EAA2BM,EAAYzF,EAAGoE,EAASvB,EAAIuB,EAASxB,EAAG,KAEnEuC,EAA2BM,EAAYzF,EAAGoE,EAAS/B,EAAI+B,EAAS9B,EAAG,KAGjEoD,GAAY1F,EAAE6C,EAAI7C,EAAE4C,EAAI6B,IAC1BzE,EAAE6C,EAAI4B,EAAOzE,EAAE4C,EACf5C,EAAEqC,KAGN,OAAOrC,EASF,SAAS8F,EACd9D,EACA+D,GAGA,IADA,IAAMC,EAAerB,EAAW3C,GACvBjC,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,IAAK,CACjD,IAAMC,EAAIgC,EAAOjC,GAQjB,GANIC,EAAE6C,EAAI7C,EAAE4C,EAAImD,EAAOtB,OAAMzE,EAAE6C,EAAIkD,EAAOtB,KAAOzE,EAAE4C,GAE/C5C,EAAE6C,EAAI,IACR7C,EAAE6C,EAAI,EACN7C,EAAE4C,EAAImD,EAAOtB,MAEVzE,EAAEoD,OAIL,KAAOyC,EAAkBG,EAAchG,IACrCA,EAAEqC,SALS2D,EAAahB,KAAKhF,GASnC,OAAOgC,EAUF,SAASiE,EAAcjE,EAAgBkE,GAC5C,IAAK,IAAInG,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,IAC5C,GAAIiC,EAAOjC,GAAGA,IAAMmG,EAAI,OAAOlE,EAAOjC,GAYnC,SAAS8F,EACd7D,EACAW,GAEA,IAAK,IAAI5C,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,IAC5C,GAAIqE,EAASpC,EAAOjC,GAAI4C,GAAa,OAAOX,EAAOjC,GAIhD,SAASoG,EACdnE,EACAW,GAEA,OAAOX,EAAOoE,QAAO,SAAApG,GAAC,OAAIoE,EAASpE,EAAG2C,MAQjC,SAASgC,EAAW3C,GACzB,OAAOA,EAAOoE,QAAO,SAAApG,GAAC,OAAIA,EAAEoD,UAWvB,SAASiD,EACdrE,EACAhC,EACA6C,EACAR,EACAiE,EACAC,EACA/B,EACAC,GAIA,GAAIzE,EAAEoD,SAA4B,IAAlBpD,EAAEqD,YAAsB,OAAOrB,EAG/C,GAAIhC,EAAEqC,IAAMA,GAAKrC,EAAE6C,IAAMA,EAAG,OAAOb,EAEnCwE,EAAI,kBAAD,OACiBxG,EAAED,EADnB,gBAC4B0G,OAAO5D,GADnC,YACyC4D,OAAOpE,GADhD,mBAC6DrC,EAAE6C,EAD/D,YACoE7C,EAAEqC,EADtE,MAGH,IAAMqE,EAAO1G,EAAE6C,EACT8D,EAAO3G,EAAEqC,EAGE,iBAANQ,IAAgB7C,EAAE6C,EAAIA,GAChB,iBAANR,IAAgBrC,EAAEqC,EAAIA,GACjCrC,EAAEkD,OAAQ,EAMV,IAAI0B,EAASC,EAAgB7C,EAAQwC,IAEnB,aAAhBA,GAA2C,iBAANnC,EACjCsE,GAAQtE,EACQ,eAAhBmC,GAA6C,iBAAN3B,GACvC6D,GAAQ7D,KAEA+B,EAASA,EAAOgC,WAC9B,IAAMC,EAAaV,EAAiBvB,EAAQ5E,GAG5C,GAAIuG,GAAoBM,EAAWzE,OAKjC,OAJAoE,EAAI,0BAAD,OAA2BxG,EAAED,EAA7B,iBACHC,EAAE6C,EAAI6D,EACN1G,EAAEqC,EAAIsE,EACN3G,EAAEkD,OAAQ,EACHlB,EAIT,IAAK,IAAIjC,EAAI,EAAGoC,EAAM0E,EAAWzE,OAAQrC,EAAIoC,EAAKpC,IAAK,CACrD,IAAM+G,EAAYD,EAAW9G,GAC7ByG,EAAI,+BAAD,OAC8BxG,EAAED,EADhC,gBACyCC,EAAE6C,EAD3C,YACgD7C,EAAEqC,EADlD,iBAC4DyE,EAAU/G,EADtE,gBAC+E+G,EAAUjE,EADzF,YAC8FiE,EAAUzE,EADxG,MAKCyE,EAAU5D,QAIZlB,EADE8E,EAAU1D,OACH2D,EACP/E,EACA8E,EACA9G,EACAsG,EACA9B,EACAC,GAGOsC,EACP/E,EACAhC,EACA8G,EACAR,EACA9B,EACAC,IAKN,OAAOzC,EAWF,SAAS+E,EACd/E,EACAgE,EACAgB,EACAV,EACA9B,EACAC,GAEA,IAAMiB,EAA2B,eAAhBlB,EAEXyC,EAA2B,eAAhBzC,EACX+B,EAAmBP,EAAa5C,OAKtC,GAAIkD,EAAc,CAEhBA,GAAe,EAGf,IAAMY,EAAuB,CAC3BrE,EAAG6C,EAAWC,KAAKzD,IAAI8D,EAAanD,EAAImE,EAAWpE,EAAG,GAAKoE,EAAWnE,EACtER,EAAG4E,EAAWtB,KAAKzD,IAAI8D,EAAa3D,EAAI2E,EAAW1E,EAAG,GAAK0E,EAAW3E,EACtEO,EAAGoE,EAAWpE,EACdN,EAAG0E,EAAW1E,EACdvC,EAAG,MAIL,IAAK8F,EAAkB7D,EAAQkF,GAI7B,OAHAV,EAAI,8BAAD,OAC6BQ,EAAWjH,EADxC,mBACoDmH,EAASrE,EAD7D,YACkEqE,EAAS7E,EAD3E,OAGIgE,EACLrE,EACAgF,EACAtB,EAAWwB,EAASrE,OAAIsE,EACxBF,EAAWC,EAAS7E,OAAI8E,EACxBb,EACAC,EACA/B,EACAC,GAKN,OAAO4B,EACLrE,EACAgF,EACAtB,EAAWsB,EAAWnE,EAAI,OAAIsE,EAC9BF,EAAWD,EAAW3E,EAAI,OAAI8E,EAC9Bb,EACAC,EACA/B,EACAC,GAUG,SAAS2C,EAAKC,GACnB,OAAa,IAANA,EAAY,IAGd,SAASC,EAAT,GAAsE,IAA9CrD,EAA8C,EAA9CA,IAAKD,EAAyC,EAAzCA,KAAME,EAAmC,EAAnCA,MAAOC,EAA4B,EAA5BA,OAEzCoD,EAAY,aAAH,OAAgBvD,EAAhB,cAA0BC,EAA1B,OACf,MAAO,CACLuD,UAAWD,EACXE,gBAAiBF,EACjBG,aAAcH,EACdI,YAAaJ,EACbK,WAAYL,EACZrD,MAAO,GAAF,OAAKA,EAAL,MACLC,OAAQ,GAAF,OAAKA,EAAL,MACN0D,SAAU,YAIP,SAASC,EAAT,GAAoE,IAA9C7D,EAA8C,EAA9CA,IAAKD,EAAyC,EAAzCA,KAAME,EAAmC,EAAnCA,MAAOC,EAA4B,EAA5BA,OAC7C,MAAO,CACLF,IAAK,GAAF,OAAKA,EAAL,MACHD,KAAM,GAAF,OAAKA,EAAL,MACJE,MAAO,GAAF,OAAKA,EAAL,MACLC,OAAQ,GAAF,OAAKA,EAAL,MACN0D,SAAU,YAUP,SAAShD,EACd7C,EACAwC,GAEA,MAAoB,eAAhBA,EAAqCuD,EAAwB/F,GACrDgG,EAAwBhG,GAG/B,SAASgG,EAAwBhG,GACtC,MAAO,GAAGiG,OAAOjG,GAAQkG,MAAK,SAAS1E,EAAGC,GACxC,OAAID,EAAEnB,EAAIoB,EAAEpB,GAAMmB,EAAEnB,IAAMoB,EAAEpB,GAAKmB,EAAEX,EAAIY,EAAEZ,EAChC,EACEW,EAAEnB,IAAMoB,EAAEpB,GAAKmB,EAAEX,IAAMY,EAAEZ,EAE3B,GAED,KAIL,SAASkF,EAAwB/F,GACtC,MAAO,GAAGiG,OAAOjG,GAAQkG,MAAK,SAAS1E,EAAGC,GACxC,OAAID,EAAEX,EAAIY,EAAEZ,GAAMW,EAAEX,IAAMY,EAAEZ,GAAKW,EAAEnB,EAAIoB,EAAEpB,EAChC,GAED,KAaL,SAAS8F,EACdC,EACAC,EACA5D,EACAD,GAEA4D,EAAgBA,GAAiB,GAGjC,IAAIpG,EAAiB,GAsCrB,OArCA2B,IAAMC,SAAS0E,QAAQD,GAAU,SAACE,EAA0BxI,GAE1D,IAAMyI,EAASvC,EAAcmC,EAAe3B,OAAO8B,EAAMjH,MACzD,GAAIkH,EACFxG,EAAOjC,GAAK2C,EAAgB8F,OACvB,CACD,EAMJ,IAAMC,EAAIF,EAAMG,MAAM,cAAgBH,EAAMG,MAAMC,MAOhD3G,EAAOjC,GAAK2C,EAJV+F,E,+VAI0B,CAAD,GAAMA,EAAN,CAAS1I,EAAGwI,EAAMjH,MAGjB,CAC1BsB,EAAG,EACHN,EAAG,EACHO,EAAG,EACHR,EAAGN,EAAOC,GACVjC,EAAG0G,OAAO8B,EAAMjH,WAQxBU,EAASuC,EADTvC,EAAS8D,EAAc9D,EAAQ,CAAEyC,KAAMA,IACdD,EAAaC,GAYjC,SAASmE,EACd5G,GAEM,IADN6G,EACM,uDADgB,SAEhBC,EAAW,CAAC,IAAK,IAAK,IAAK,KACjC,IAAKrG,MAAMsG,QAAQ/G,GACjB,MAAM,IAAIgH,MAAMH,EAAc,sBAChC,IAAK,IAAI9I,EAAI,EAAGoC,EAAMH,EAAOI,OAAQrC,EAAIoC,EAAKpC,IAAK,CAEjD,IADA,IAAMqF,EAAOpD,EAAOjC,GACXkJ,EAAI,EAAGA,EAAIH,EAAS1G,OAAQ6G,IACnC,GAAiC,iBAAtB7D,EAAK0D,EAASG,IACvB,MAAM,IAAID,MACR,oBACEH,EACA,IACA9I,EACA,KACA+I,EAASG,GACT,sBAIR,GAAI7D,EAAKrF,GAAuB,iBAAXqF,EAAKrF,EACxB,MAAM,IAAIiJ,MACR,oBAAsBH,EAAc,IAAM9I,EAAI,yBAGlD,QAAoBoH,IAAhB/B,EAAKhC,QAA+C,kBAAhBgC,EAAKhC,OAC3C,MAAM,IAAI4F,MACR,oBACEH,EACA,IACA9I,EACA,gCAOH,SAASyE,EACdkE,GACa,MAC4BA,GAAS,GAA1CQ,EADK,EACLA,gBAAiB1E,EADZ,EACYA,YACzB,OAA2B,IAApB0E,EAA4B,KAAO1E,EAIrC,SAAS2E,EAAiBC,EAAYC,GAC3CA,EAAIf,SAAQ,SAAAhH,GAAG,OAAK8H,EAAG9H,GAAO8H,EAAG9H,GAAKC,KAAK6H,MAG7C,SAAS5C,KAMF,IAAM8C,EAAO,c,cCttBpBjK,EAAOD,QAAUM,G,iBCAjB,cAUA,IAaI6J,EAAU,qBAQVC,EAAS,eAGTC,EAAY,kBAIZC,EAAS,eAyBTC,EAAe,8BAGfC,EAAW,mBAGXC,EAAiB,GACrBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAeN,GAAWM,EAnDX,kBAoDfA,EAhCqB,wBAgCYA,EAlDnB,oBAmDdA,EAhCkB,qBAgCYA,EAlDhB,iBAmDdA,EAlDe,kBAkDYA,EAjDb,qBAkDdA,EAAeL,GAAUK,EA/CT,mBAgDhBA,EAAeJ,GAAaI,EA3CZ,mBA4ChBA,EAAeH,GAAUG,EA1CT,mBA2ChBA,EAxCiB,qBAwCY,EAG7B,IAAIC,EAA8B,iBAAVC,GAAsBA,GAAUA,EAAOtJ,SAAWA,QAAUsJ,EAGhFC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKxJ,SAAWA,QAAUwJ,KAGxE/K,EAAO4K,GAAcE,GAAYE,SAAS,cAATA,GAGjCC,EAA4C/K,IAAYA,EAAQgL,UAAYhL,EAG5EiL,EAAaF,GAAgC,iBAAV9K,GAAsBA,IAAWA,EAAO+K,UAAY/K,EAGvFiL,EAAgBD,GAAcA,EAAWjL,UAAY+K,EAGrDI,EAAcD,GAAiBR,EAAWU,QAG1CC,EAAY,WACd,IACE,OAAOF,GAAeA,EAAYG,SAAWH,EAAYG,QAAQ,QACjE,MAAOC,KAHI,GAOXC,EAAmBH,GAAYA,EAASI,aAuD5C,SAASC,EAAUC,EAAOC,GAIxB,IAHA,IAAIC,GAAS,EACT7I,EAAkB,MAAT2I,EAAgB,EAAIA,EAAM3I,SAE9B6I,EAAQ7I,GACf,GAAI4I,EAAUD,EAAME,GAAQA,EAAOF,GACjC,OAAO,EAGX,OAAO,EAkET,SAASG,EAAWrH,GAClB,IAAIoH,GAAS,EACTE,EAAS1I,MAAMoB,EAAIuH,MAKvB,OAHAvH,EAAIyE,SAAQ,SAAStH,EAAOM,GAC1B6J,IAASF,GAAS,CAAC3J,EAAKN,MAEnBmK,EAwBT,SAASE,EAAWC,GAClB,IAAIL,GAAS,EACTE,EAAS1I,MAAM6I,EAAIF,MAKvB,OAHAE,EAAIhD,SAAQ,SAAStH,GACnBmK,IAASF,GAASjK,KAEbmK,EAIT,IAeMI,EAvCWC,EAAMhE,EAwBnBiE,EAAahJ,MAAMd,UACnB+J,EAAYxB,SAASvI,UACrBgK,EAAclL,OAAOkB,UAGrBiK,EAAa1M,EAAK,sBAGlB2M,EAAeH,EAAUI,SAGzBlK,EAAiB+J,EAAY/J,eAG7BmK,GACER,EAAM,SAASS,KAAKJ,GAAcA,EAAWK,MAAQL,EAAWK,KAAKC,UAAY,KACvE,iBAAmBX,EAAO,GAQtCY,EAAuBR,EAAYG,SAGnCM,EAAaC,OAAO,IACtBR,EAAa3L,KAAK0B,GAAgB0K,QA7PjB,sBA6PuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EC,EAASjC,EAAgBpL,EAAKqN,YAASpF,EACvCrG,EAAS5B,EAAK4B,OACd0L,EAAatN,EAAKsN,WAClBC,EAAuBd,EAAYc,qBACnCC,EAASjB,EAAWiB,OACpBC,EAAiB7L,EAASA,EAAOC,iBAAcoG,EAG/CyF,EAAmBnM,OAAOoM,sBAC1BC,EAAiBP,EAASA,EAAOQ,cAAW5F,EAC5C6F,GAnEaxB,EAmEQ/K,OAAOwL,KAnETzE,EAmEe/G,OAlE7B,SAASwM,GACd,OAAOzB,EAAKhE,EAAUyF,MAoEtBC,EAAWC,GAAUjO,EAAM,YAC3BkO,EAAMD,GAAUjO,EAAM,OACtBmO,EAAUF,GAAUjO,EAAM,WAC1BoO,EAAMH,GAAUjO,EAAM,OACtBqO,EAAUJ,GAAUjO,EAAM,WAC1BsO,EAAeL,GAAU1M,OAAQ,UAGjCgN,EAAqBC,GAASR,GAC9BS,EAAgBD,GAASN,GACzBQ,EAAoBF,GAASL,GAC7BQ,EAAgBH,GAASJ,GACzBQ,EAAoBJ,GAASH,GAG7BQ,GAAcjN,EAASA,EAAOa,eAAYwF,EAC1C6G,GAAgBD,GAAcA,GAAYE,aAAU9G,EASxD,SAAS+G,GAAKC,GACZ,IAAIlD,GAAS,EACT7I,EAAoB,MAAX+L,EAAkB,EAAIA,EAAQ/L,OAG3C,IADAgM,KAAKC,UACIpD,EAAQ7I,GAAQ,CACvB,IAAIkM,EAAQH,EAAQlD,GACpBmD,KAAK9C,IAAIgD,EAAM,GAAIA,EAAM,KA+F7B,SAASC,GAAUJ,GACjB,IAAIlD,GAAS,EACT7I,EAAoB,MAAX+L,EAAkB,EAAIA,EAAQ/L,OAG3C,IADAgM,KAAKC,UACIpD,EAAQ7I,GAAQ,CACvB,IAAIkM,EAAQH,EAAQlD,GACpBmD,KAAK9C,IAAIgD,EAAM,GAAIA,EAAM,KA4G7B,SAASE,GAASL,GAChB,IAAIlD,GAAS,EACT7I,EAAoB,MAAX+L,EAAkB,EAAIA,EAAQ/L,OAG3C,IADAgM,KAAKC,UACIpD,EAAQ7I,GAAQ,CACvB,IAAIkM,EAAQH,EAAQlD,GACpBmD,KAAK9C,IAAIgD,EAAM,GAAIA,EAAM,KA+F7B,SAASG,GAASC,GAChB,IAAIzD,GAAS,EACT7I,EAAmB,MAAVsM,EAAiB,EAAIA,EAAOtM,OAGzC,IADAgM,KAAKO,SAAW,IAAIH,KACXvD,EAAQ7I,GACfgM,KAAKQ,IAAIF,EAAOzD,IA2CpB,SAAS4D,GAAMV,GACb,IAAIW,EAAOV,KAAKO,SAAW,IAAIJ,GAAUJ,GACzCC,KAAKhD,KAAO0D,EAAK1D,KAmGnB,SAAS2D,GAAc/N,EAAOgO,GAC5B,IAAIC,EAAQlG,GAAQ/H,GAChBkO,GAASD,GAASE,GAAYnO,GAC9BoO,GAAUH,IAAUC,GAASnC,GAAS/L,GACtCqO,GAAUJ,IAAUC,IAAUE,GAAUvE,GAAa7J,GACrDsO,EAAcL,GAASC,GAASE,GAAUC,EAC1ClE,EAASmE,EAloBf,SAAmB9N,EAAG+N,GAIpB,IAHA,IAAItE,GAAS,EACTE,EAAS1I,MAAMjB,KAEVyJ,EAAQzJ,GACf2J,EAAOF,GAASsE,EAAStE,GAE3B,OAAOE,EA2nBoBqE,CAAUxO,EAAMoB,OAAQqE,QAAU,GACzDrE,EAAS+I,EAAO/I,OAEpB,IAAK,IAAId,KAAON,GACTgO,IAAapN,EAAe1B,KAAKc,EAAOM,IACvCgO,IAEQ,UAAPhO,GAEC8N,IAAkB,UAAP9N,GAA0B,UAAPA,IAE9B+N,IAAkB,UAAP/N,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDmO,GAAQnO,EAAKc,KAElB+I,EAAOnG,KAAK1D,GAGhB,OAAO6J,EAWT,SAASuE,GAAa3E,EAAOzJ,GAE3B,IADA,IAAIc,EAAS2I,EAAM3I,OACZA,KACL,GAAIuN,GAAG5E,EAAM3I,GAAQ,GAAId,GACvB,OAAOc,EAGX,OAAQ,EA0BV,SAASwN,GAAW5O,GAClB,OAAa,MAATA,OACemG,IAAVnG,EAt1BQ,qBARL,gBAg2BJ2L,GAAkBA,KAAkBlM,OAAOO,GA0arD,SAAmBA,GACjB,IAAI6O,EAAQjO,EAAe1B,KAAKc,EAAO2L,GACnCmD,EAAM9O,EAAM2L,GAEhB,IACE3L,EAAM2L,QAAkBxF,EACxB,IAAI4I,GAAW,EACf,MAAOpF,IAET,IAAIQ,EAASgB,EAAqBjM,KAAKc,GACnC+O,IACEF,EACF7O,EAAM2L,GAAkBmD,SAEjB9O,EAAM2L,IAGjB,OAAOxB,EA1bH6E,CAAUhP,GA4iBhB,SAAwBA,GACtB,OAAOmL,EAAqBjM,KAAKc,GA5iB7BiP,CAAejP,GAUrB,SAASkP,GAAgBlP,GACvB,OAAOmP,GAAanP,IAAU4O,GAAW5O,IAAUuI,EAiBrD,SAAS6G,GAAYpP,EAAOqP,EAAOC,EAASC,EAAYC,GACtD,OAAIxP,IAAUqP,IAGD,MAATrP,GAA0B,MAATqP,IAAmBF,GAAanP,KAAWmP,GAAaE,GACpErP,GAAUA,GAASqP,GAAUA,EAmBxC,SAAyB5O,EAAQ4O,EAAOC,EAASC,EAAYE,EAAWD,GACtE,IAAIE,EAAW3H,GAAQtH,GACnBkP,EAAW5H,GAAQsH,GACnBO,EAASF,EAl6BA,iBAk6BsBG,GAAOpP,GACtCqP,EAASH,EAn6BA,iBAm6BsBE,GAAOR,GAKtCU,GAHJH,EAASA,GAAUrH,EAAUE,EAAYmH,IAGhBnH,EACrBuH,GAHJF,EAASA,GAAUvH,EAAUE,EAAYqH,IAGhBrH,EACrBwH,EAAYL,GAAUE,EAE1B,GAAIG,GAAalE,GAAStL,GAAS,CACjC,IAAKsL,GAASsD,GACZ,OAAO,EAETK,GAAW,EACXK,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADAP,IAAUA,EAAQ,IAAI3B,IACd6B,GAAY7F,GAAapJ,GAC7ByP,GAAYzP,EAAQ4O,EAAOC,EAASC,EAAYE,EAAWD,GAiKnE,SAAoB/O,EAAQ4O,EAAOP,EAAKQ,EAASC,EAAYE,EAAWD,GACtE,OAAQV,GACN,IApkCc,oBAqkCZ,GAAKrO,EAAO0P,YAAcd,EAAMc,YAC3B1P,EAAO2P,YAAcf,EAAMe,WAC9B,OAAO,EAET3P,EAASA,EAAO4P,OAChBhB,EAAQA,EAAMgB,OAEhB,IA7kCiB,uBA8kCf,QAAK5P,EAAO0P,YAAcd,EAAMc,aAC3BV,EAAU,IAAIjE,EAAW/K,GAAS,IAAI+K,EAAW6D,KAKxD,IAtmCU,mBAumCV,IAtmCU,gBAumCV,IAlmCY,kBAqmCV,OAAOV,IAAIlO,GAAS4O,GAEtB,IA3mCW,iBA4mCT,OAAO5O,EAAOnB,MAAQ+P,EAAM/P,MAAQmB,EAAO6P,SAAWjB,EAAMiB,QAE9D,IArmCY,kBAsmCZ,IApmCY,kBAwmCV,OAAO7P,GAAW4O,EAAQ,GAE5B,KAAK7G,EACH,IAAI+H,EAAUrG,EAEhB,KAAKxB,EACH,IAAI8H,EAroCiB,EAqoCLlB,EAGhB,GAFAiB,IAAYA,EAAUlG,GAElB5J,EAAO2J,MAAQiF,EAAMjF,OAASoG,EAChC,OAAO,EAGT,IAAIC,EAAUjB,EAAM5P,IAAIa,GACxB,GAAIgQ,EACF,OAAOA,GAAWpB,EAEpBC,GA/oCuB,EAkpCvBE,EAAMlF,IAAI7J,EAAQ4O,GAClB,IAAIlF,EAAS+F,GAAYK,EAAQ9P,GAAS8P,EAAQlB,GAAQC,EAASC,EAAYE,EAAWD,GAE1F,OADAA,EAAc,OAAE/O,GACT0J,EAET,IAhoCY,kBAioCV,GAAI6C,GACF,OAAOA,GAAc9N,KAAKuB,IAAWuM,GAAc9N,KAAKmQ,GAG9D,OAAO,EA9NDqB,CAAWjQ,EAAQ4O,EAAOO,EAAQN,EAASC,EAAYE,EAAWD,GAExE,KAj8ByB,EAi8BnBF,GAAiC,CACrC,IAAIqB,EAAeZ,GAAYnP,EAAe1B,KAAKuB,EAAQ,eACvDmQ,EAAeZ,GAAYpP,EAAe1B,KAAKmQ,EAAO,eAE1D,GAAIsB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAelQ,EAAOT,QAAUS,EAC/CqQ,EAAeF,EAAevB,EAAMrP,QAAUqP,EAGlD,OADAG,IAAUA,EAAQ,IAAI3B,IACf4B,EAAUoB,EAAcC,EAAcxB,EAASC,EAAYC,IAGtE,IAAKS,EACH,OAAO,EAGT,OADAT,IAAUA,EAAQ,IAAI3B,IA6NxB,SAAsBpN,EAAQ4O,EAAOC,EAASC,EAAYE,EAAWD,GACnE,IAAIgB,EA9qCqB,EA8qCTlB,EACZyB,EAAWC,GAAWvQ,GACtBwQ,EAAYF,EAAS3P,OAErB8P,EADWF,GAAW3B,GACDjO,OAEzB,GAAI6P,GAAaC,IAAcV,EAC7B,OAAO,EAET,IAAIvG,EAAQgH,EACZ,KAAOhH,KAAS,CACd,IAAI3J,EAAMyQ,EAAS9G,GACnB,KAAMuG,EAAYlQ,KAAO+O,EAAQzO,EAAe1B,KAAKmQ,EAAO/O,IAC1D,OAAO,EAIX,IAAImQ,EAAUjB,EAAM5P,IAAIa,GACxB,GAAIgQ,GAAWjB,EAAM5P,IAAIyP,GACvB,OAAOoB,GAAWpB,EAEpB,IAAIlF,GAAS,EACbqF,EAAMlF,IAAI7J,EAAQ4O,GAClBG,EAAMlF,IAAI+E,EAAO5O,GAEjB,IAAI0Q,EAAWX,EACf,OAASvG,EAAQgH,GAAW,CAC1B3Q,EAAMyQ,EAAS9G,GACf,IAAImH,EAAW3Q,EAAOH,GAClB+Q,EAAWhC,EAAM/O,GAErB,GAAIiP,EACF,IAAI+B,EAAWd,EACXjB,EAAW8B,EAAUD,EAAU9Q,EAAK+O,EAAO5O,EAAQ+O,GACnDD,EAAW6B,EAAUC,EAAU/Q,EAAKG,EAAQ4O,EAAOG,GAGzD,UAAmBrJ,IAAbmL,EACGF,IAAaC,GAAY5B,EAAU2B,EAAUC,EAAU/B,EAASC,EAAYC,GAC7E8B,GACD,CACLnH,GAAS,EACT,MAEFgH,IAAaA,EAAkB,eAAP7Q,GAE1B,GAAI6J,IAAWgH,EAAU,CACvB,IAAII,EAAU9Q,EAAO+Q,YACjBC,EAAUpC,EAAMmC,YAGhBD,GAAWE,GACV,gBAAiBhR,GAAU,gBAAiB4O,KACzB,mBAAXkC,GAAyBA,aAAmBA,GACjC,mBAAXE,GAAyBA,aAAmBA,KACvDtH,GAAS,GAKb,OAFAqF,EAAc,OAAE/O,GAChB+O,EAAc,OAAEH,GACTlF,EAzRAuH,CAAajR,EAAQ4O,EAAOC,EAASC,EAAYE,EAAWD,GA3D5DmC,CAAgB3R,EAAOqP,EAAOC,EAASC,EAAYH,GAAaI,IAsEzE,SAASoC,GAAa5R,GACpB,SAAK6R,GAAS7R,IAwahB,SAAkBwK,GAChB,QAASO,GAAeA,KAAcP,EAzadsH,CAAS9R,MAGnB+R,GAAW/R,GAASoL,EAAazC,GAChCqJ,KAAKtF,GAAS1M,IAsB/B,SAASiS,GAASxR,GAChB,GAyZIyR,GADelS,EAxZFS,IAyZGT,EAAMwR,YACtBW,EAAwB,mBAARD,GAAsBA,EAAKvR,WAAcgK,EAEtD3K,IAAUmS,EA3Zf,OAAOnG,EAAWvL,GAuZtB,IAAqBT,EACfkS,EACAC,EAvZAhI,EAAS,GACb,IAAK,IAAI7J,KAAOb,OAAOgB,GACjBG,EAAe1B,KAAKuB,EAAQH,IAAe,eAAPA,GACtC6J,EAAOnG,KAAK1D,GAGhB,OAAO6J,EAgBT,SAAS+F,GAAYnG,EAAOsF,EAAOC,EAASC,EAAYE,EAAWD,GACjE,IAAIgB,EAlhCqB,EAkhCTlB,EACZ8C,EAAYrI,EAAM3I,OAClB8P,EAAY7B,EAAMjO,OAEtB,GAAIgR,GAAalB,KAAeV,GAAaU,EAAYkB,GACvD,OAAO,EAGT,IAAI3B,EAAUjB,EAAM5P,IAAImK,GACxB,GAAI0G,GAAWjB,EAAM5P,IAAIyP,GACvB,OAAOoB,GAAWpB,EAEpB,IAAIpF,GAAS,EACTE,GAAS,EACTkI,EA/hCuB,EA+hCf/C,EAAoC,IAAI7B,QAAWtH,EAM/D,IAJAqJ,EAAMlF,IAAIP,EAAOsF,GACjBG,EAAMlF,IAAI+E,EAAOtF,KAGRE,EAAQmI,GAAW,CAC1B,IAAIE,EAAWvI,EAAME,GACjBoH,EAAWhC,EAAMpF,GAErB,GAAIsF,EACF,IAAI+B,EAAWd,EACXjB,EAAW8B,EAAUiB,EAAUrI,EAAOoF,EAAOtF,EAAOyF,GACpDD,EAAW+C,EAAUjB,EAAUpH,EAAOF,EAAOsF,EAAOG,GAE1D,QAAiBrJ,IAAbmL,EAAwB,CAC1B,GAAIA,EACF,SAEFnH,GAAS,EACT,MAGF,GAAIkI,GACF,IAAKvI,EAAUuF,GAAO,SAASgC,EAAUkB,GACnC,GA72BajS,EA62BOiS,GAANF,EA52BXG,IAAIlS,KA62BFgS,IAAajB,GAAY5B,EAAU6C,EAAUjB,EAAU/B,EAASC,EAAYC,IAC/E,OAAO6C,EAAKrO,KAAKuO,GA/2B/B,IAAyBjS,KAi3BX,CACN6J,GAAS,EACT,YAEG,GACDmI,IAAajB,IACX5B,EAAU6C,EAAUjB,EAAU/B,EAASC,EAAYC,GACpD,CACLrF,GAAS,EACT,OAKJ,OAFAqF,EAAc,OAAEzF,GAChByF,EAAc,OAAEH,GACTlF,EAyKT,SAAS6G,GAAWvQ,GAClB,OApZF,SAAwBA,EAAQgS,EAAUC,GACxC,IAAIvI,EAASsI,EAAShS,GACtB,OAAOsH,GAAQtH,GAAU0J,EAhuB3B,SAAmBJ,EAAO2D,GAKxB,IAJA,IAAIzD,GAAS,EACT7I,EAASsM,EAAOtM,OAChBuR,EAAS5I,EAAM3I,SAEV6I,EAAQ7I,GACf2I,EAAM4I,EAAS1I,GAASyD,EAAOzD,GAEjC,OAAOF,EAwtB2B6I,CAAUzI,EAAQuI,EAAYjS,IAkZzDoS,CAAepS,EAAQwK,GAAM6H,IAWtC,SAASC,GAAWlQ,EAAKvC,GACvB,IAsHiBN,EACbgT,EAvHAlF,EAAOjL,EAAI8K,SACf,OAuHgB,WADZqF,SADahT,EArHAM,KAuHmB,UAAR0S,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVhT,EACU,OAAVA,GAxHD8N,EAAmB,iBAAPxN,EAAkB,SAAW,QACzCwN,EAAKjL,IAWX,SAASsJ,GAAU1L,EAAQH,GACzB,IAAIN,EAxjCN,SAAkBS,EAAQH,GACxB,OAAiB,MAAVG,OAAiB0F,EAAY1F,EAAOH,GAujC/B2S,CAASxS,EAAQH,GAC7B,OAAOsR,GAAa5R,GAASA,OAAQmG,EAp2BvC+G,GAAKvM,UAAU0M,MAvEf,WACED,KAAKO,SAAWnB,EAAeA,EAAa,MAAQ,GACpDY,KAAKhD,KAAO,GAsEd8C,GAAKvM,UAAkB,OAzDvB,SAAoBL,GAClB,IAAI6J,EAASiD,KAAKoF,IAAIlS,WAAe8M,KAAKO,SAASrN,GAEnD,OADA8M,KAAKhD,MAAQD,EAAS,EAAI,EACnBA,GAuDT+C,GAAKvM,UAAUf,IA3Cf,SAAiBU,GACf,IAAIwN,EAAOV,KAAKO,SAChB,GAAInB,EAAc,CAChB,IAAIrC,EAAS2D,EAAKxN,GAClB,MA3YiB,8BA2YV6J,OAA4BhE,EAAYgE,EAEjD,OAAOvJ,EAAe1B,KAAK4O,EAAMxN,GAAOwN,EAAKxN,QAAO6F,GAsCtD+G,GAAKvM,UAAU6R,IA1Bf,SAAiBlS,GACf,IAAIwN,EAAOV,KAAKO,SAChB,OAAOnB,OAA8BrG,IAAd2H,EAAKxN,GAAsBM,EAAe1B,KAAK4O,EAAMxN,IAyB9E4M,GAAKvM,UAAU2J,IAZf,SAAiBhK,EAAKN,GACpB,IAAI8N,EAAOV,KAAKO,SAGhB,OAFAP,KAAKhD,MAAQgD,KAAKoF,IAAIlS,GAAO,EAAI,EACjCwN,EAAKxN,GAAQkM,QAA0BrG,IAAVnG,EA3aV,4BA2akDA,EAC9DoN,MAuHTG,GAAU5M,UAAU0M,MApFpB,WACED,KAAKO,SAAW,GAChBP,KAAKhD,KAAO,GAmFdmD,GAAU5M,UAAkB,OAvE5B,SAAyBL,GACvB,IAAIwN,EAAOV,KAAKO,SACZ1D,EAAQyE,GAAaZ,EAAMxN,GAE/B,QAAI2J,EAAQ,KAIRA,GADY6D,EAAK1M,OAAS,EAE5B0M,EAAKoF,MAELxH,EAAOxM,KAAK4O,EAAM7D,EAAO,KAEzBmD,KAAKhD,MACA,IA0DTmD,GAAU5M,UAAUf,IA9CpB,SAAsBU,GACpB,IAAIwN,EAAOV,KAAKO,SACZ1D,EAAQyE,GAAaZ,EAAMxN,GAE/B,OAAO2J,EAAQ,OAAI9D,EAAY2H,EAAK7D,GAAO,IA2C7CsD,GAAU5M,UAAU6R,IA/BpB,SAAsBlS,GACpB,OAAOoO,GAAatB,KAAKO,SAAUrN,IAAQ,GA+B7CiN,GAAU5M,UAAU2J,IAlBpB,SAAsBhK,EAAKN,GACzB,IAAI8N,EAAOV,KAAKO,SACZ1D,EAAQyE,GAAaZ,EAAMxN,GAQ/B,OANI2J,EAAQ,KACRmD,KAAKhD,KACP0D,EAAK9J,KAAK,CAAC1D,EAAKN,KAEhB8N,EAAK7D,GAAO,GAAKjK,EAEZoN,MAyGTI,GAAS7M,UAAU0M,MAtEnB,WACED,KAAKhD,KAAO,EACZgD,KAAKO,SAAW,CACd,KAAQ,IAAIT,GACZ,IAAO,IAAKd,GAAOmB,IACnB,OAAU,IAAIL,KAkElBM,GAAS7M,UAAkB,OArD3B,SAAwBL,GACtB,IAAI6J,EAAS4I,GAAW3F,KAAM9M,GAAa,OAAEA,GAE7C,OADA8M,KAAKhD,MAAQD,EAAS,EAAI,EACnBA,GAmDTqD,GAAS7M,UAAUf,IAvCnB,SAAqBU,GACnB,OAAOyS,GAAW3F,KAAM9M,GAAKV,IAAIU,IAuCnCkN,GAAS7M,UAAU6R,IA3BnB,SAAqBlS,GACnB,OAAOyS,GAAW3F,KAAM9M,GAAKkS,IAAIlS,IA2BnCkN,GAAS7M,UAAU2J,IAdnB,SAAqBhK,EAAKN,GACxB,IAAI8N,EAAOiF,GAAW3F,KAAM9M,GACxB8J,EAAO0D,EAAK1D,KAIhB,OAFA0D,EAAKxD,IAAIhK,EAAKN,GACdoN,KAAKhD,MAAQ0D,EAAK1D,MAAQA,EAAO,EAAI,EAC9BgD,MAyDTK,GAAS9M,UAAUiN,IAAMH,GAAS9M,UAAUqD,KAnB5C,SAAqBhE,GAEnB,OADAoN,KAAKO,SAASrD,IAAItK,EA3qBC,6BA4qBZoN,MAkBTK,GAAS9M,UAAU6R,IANnB,SAAqBxS,GACnB,OAAOoN,KAAKO,SAAS6E,IAAIxS,IAqG3B6N,GAAMlN,UAAU0M,MA3EhB,WACED,KAAKO,SAAW,IAAIJ,GACpBH,KAAKhD,KAAO,GA0EdyD,GAAMlN,UAAkB,OA9DxB,SAAqBL,GACnB,IAAIwN,EAAOV,KAAKO,SACZxD,EAAS2D,EAAa,OAAExN,GAG5B,OADA8M,KAAKhD,KAAO0D,EAAK1D,KACVD,GA0DT0D,GAAMlN,UAAUf,IA9ChB,SAAkBU,GAChB,OAAO8M,KAAKO,SAAS/N,IAAIU,IA8C3BuN,GAAMlN,UAAU6R,IAlChB,SAAkBlS,GAChB,OAAO8M,KAAKO,SAAS6E,IAAIlS,IAkC3BuN,GAAMlN,UAAU2J,IArBhB,SAAkBhK,EAAKN,GACrB,IAAI8N,EAAOV,KAAKO,SAChB,GAAIG,aAAgBP,GAAW,CAC7B,IAAI4F,EAAQrF,EAAKH,SACjB,IAAKvB,GAAQ+G,EAAM/R,OAASgS,IAG1B,OAFAD,EAAMnP,KAAK,CAAC1D,EAAKN,IACjBoN,KAAKhD,OAAS0D,EAAK1D,KACZgD,KAETU,EAAOV,KAAKO,SAAW,IAAIH,GAAS2F,GAItC,OAFArF,EAAKxD,IAAIhK,EAAKN,GACdoN,KAAKhD,KAAO0D,EAAK1D,KACVgD,MA+hBT,IAAI0F,GAAclH,EAA+B,SAASnL,GACxD,OAAc,MAAVA,EACK,IAETA,EAAShB,OAAOgB,GA9sClB,SAAqBsJ,EAAOC,GAM1B,IALA,IAAIC,GAAS,EACT7I,EAAkB,MAAT2I,EAAgB,EAAIA,EAAM3I,OACnCiS,EAAW,EACXlJ,EAAS,KAEJF,EAAQ7I,GAAQ,CACvB,IAAIpB,EAAQ+J,EAAME,GACdD,EAAUhK,EAAOiK,EAAOF,KAC1BI,EAAOkJ,KAAcrT,GAGzB,OAAOmK,EAmsCAmJ,CAAY1H,EAAiBnL,IAAS,SAAS8S,GACpD,OAAO9H,EAAqBvM,KAAKuB,EAAQ8S,QAsd7C,WACE,MAAO,IA5cL1D,GAASjB,GAkCb,SAASH,GAAQzO,EAAOoB,GAEtB,SADAA,EAAmB,MAAVA,EAt2CY,iBAs2CwBA,KAE1B,iBAATpB,GAAqB4I,EAASoJ,KAAKhS,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQoB,EA4D7C,SAASsL,GAASlC,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOK,EAAa3L,KAAKsL,GACzB,MAAOb,IACT,IACE,OAAQa,EAAO,GACf,MAAOb,KAEX,MAAO,GAmCT,SAASgF,GAAG3O,EAAOqP,GACjB,OAAOrP,IAAUqP,GAAUrP,GAAUA,GAASqP,GAAUA,GA5IrDnD,GA7yCa,qBA6yCD2D,GAAO,IAAI3D,EAAS,IAAIsH,YAAY,MAChDpH,GAAOyD,GAAO,IAAIzD,IAAQ5D,GAC1B6D,GAzzCY,oBAyzCDwD,GAAOxD,EAAQoH,YAC1BnH,GAAOuD,GAAO,IAAIvD,IAAQ5D,GAC1B6D,GApzCY,oBAozCDsD,GAAO,IAAItD,MACzBsD,GAAS,SAAS7P,GAChB,IAAImK,EAASyE,GAAW5O,GACpBkS,EAAO/H,GAAU1B,EAAYzI,EAAMwR,iBAAcrL,EACjDuN,EAAaxB,EAAOxF,GAASwF,GAAQ,GAEzC,GAAIwB,EACF,OAAQA,GACN,KAAKjH,EAAoB,MAzzCf,oBA0zCV,KAAKE,EAAe,OAAOnE,EAC3B,KAAKoE,EAAmB,MAr0Cf,mBAs0CT,KAAKC,EAAe,OAAOnE,EAC3B,KAAKoE,EAAmB,MAh0Cf,mBAm0Cb,OAAO3C,IA8IX,IAAIgE,GAAce,GAAgB,WAAa,OAAOyE,UAApB,IAAsCzE,GAAkB,SAASlP,GACjG,OAAOmP,GAAanP,IAAUY,EAAe1B,KAAKc,EAAO,YACtDyL,EAAqBvM,KAAKc,EAAO,WA0BlC+H,GAAUtG,MAAMsG,QAgDpB,IAAIgE,GAAWD,GA4Of,WACE,OAAO,GA1LT,SAASiG,GAAW/R,GAClB,IAAK6R,GAAS7R,GACZ,OAAO,EAIT,IAAI8O,EAAMF,GAAW5O,GACrB,MApmDY,qBAomDL8O,GAnmDI,8BAmmDcA,GAxmDZ,0BAwmD6BA,GA7lD7B,kBA6lDgDA,EA6B/D,SAAS8E,GAAS5T,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA5oDb,iBAwqDvB,SAAS6R,GAAS7R,GAChB,IAAIgT,SAAchT,EAClB,OAAgB,MAATA,IAA0B,UAARgT,GAA4B,YAARA,GA2B/C,SAAS7D,GAAanP,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAI6J,GAAeD,EAhiDnB,SAAmBY,GACjB,OAAO,SAASxK,GACd,OAAOwK,EAAKxK,IA8hDsB6T,CAAUjK,GAnvBhD,SAA0B5J,GACxB,OAAOmP,GAAanP,IAClB4T,GAAS5T,EAAMoB,WAAayH,EAAe+F,GAAW5O,KA+wB1D,SAASiL,GAAKxK,GACZ,OA1NgB,OADGT,EA2NAS,IA1NKmT,GAAS5T,EAAMoB,UAAY2Q,GAAW/R,GA0NjC+N,GAActN,GAAUwR,GAASxR,GA3NhE,IAAqBT,EAqQrB3B,EAAOD,QAlNP,SAAiB4B,EAAOqP,GACtB,OAAOD,GAAYpP,EAAOqP,M,wDCpmD5B,8OA6BO,SAASyE,EACdC,EACA7Q,GAIA,IAFA,IAAMU,EAASoQ,EAAgBD,GAC3BE,EAAWrQ,EAAO,GACb7E,EAAI,EAAGoC,EAAMyC,EAAOxC,OAAQrC,EAAIoC,EAAKpC,IAAK,CACjD,IAAMmV,EAAiBtQ,EAAO7E,GAC1BmE,EAAQ6Q,EAAYG,KAAiBD,EAAWC,GAEtD,OAAOD,EASF,SAASE,EACdC,EACA3Q,GAEA,IAAKA,EAAK2Q,GACR,MAAM,IAAIpM,MACR,0DACEoM,EACA,gBAGN,OAAO3Q,EAAK2Q,GAiBP,SAASC,EACdC,EACAP,EACAK,EACAG,EACA9Q,EACAD,GAGA,GAAI8Q,EAAQF,GAAa,OAAO7S,sBAAY+S,EAAQF,IAOpD,IALA,IAAIpT,EAASsT,EAAQC,GACfC,EAAoBR,EAAgBD,GACpCU,EAAmBD,EAAkBE,MACzCF,EAAkBvQ,QAAQmQ,IAEnBrV,EAAI,EAAGoC,EAAMsT,EAAiBrT,OAAQrC,EAAIoC,EAAKpC,IAAK,CAC3D,IAAM0D,EAAIgS,EAAiB1V,GAC3B,GAAIuV,EAAQ7R,GAAI,CACdzB,EAASsT,EAAQ7R,GACjB,OAIJ,OADAzB,EAASO,sBAAYP,GAAU,IACxBuC,kBAAQuB,wBAAc9D,EAAQ,CAAEyC,KAAMA,IAASD,EAAaC,GAU9D,SAASuQ,EAAgBD,GAE9B,OAD4BtU,OAAOwL,KAAK8I,GAC5B7M,MAAK,SAAS1E,EAAGC,GAC3B,OAAOsR,EAAYvR,GAAKuR,EAAYtR,Q,cCnHxCpE,EAAOD,QAAUO,G,gBCAjB;;;;;GAOC,WACA,aAEA,IAAIgW,EAAS,GAAG/T,eAEhB,SAASgU,IAGR,IAFA,IAAIC,EAAU,GAEL9V,EAAI,EAAGA,EAAI4U,UAAUvS,OAAQrC,IAAK,CAC1C,IAAIkN,EAAM0H,UAAU5U,GACpB,GAAKkN,EAAL,CAEA,IAAI6I,SAAiB7I,EAErB,GAAgB,WAAZ6I,GAAoC,WAAZA,EAC3BD,EAAQ7Q,KAAKiI,QACP,GAAIxK,MAAMsG,QAAQkE,IAAQA,EAAI7K,OAAQ,CAC5C,IAAI2T,EAAQH,EAAWI,MAAM,KAAM/I,GAC/B8I,GACHF,EAAQ7Q,KAAK+Q,QAER,GAAgB,WAAZD,EACV,IAAK,IAAIxU,KAAO2L,EACX0I,EAAOzV,KAAK+M,EAAK3L,IAAQ2L,EAAI3L,IAChCuU,EAAQ7Q,KAAK1D,IAMjB,OAAOuU,EAAQI,KAAK,KAGgB5W,EAAOD,SAC3CwW,EAAWM,QAAUN,EACrBvW,EAAOD,QAAUwW,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aAxCH,I,gBCPuU,IAAS3U,EAAE0J,EAAlBlL,OAA/PJ,EAAOD,SAAwQ6B,EAA9P,EAAQ,GAAwP0J,EAA/O,EAAQ,GAAiP,SAAS1J,GAAG,IAAI0J,EAAE,GAAG,SAASnJ,EAAEX,GAAG,GAAG8J,EAAE9J,GAAG,OAAO8J,EAAE9J,GAAGzB,QAAQ,IAAIoB,EAAEmK,EAAE9J,GAAG,CAACd,EAAEc,EAAEb,GAAE,EAAGZ,QAAQ,IAAI,OAAO6B,EAAEJ,GAAGX,KAAKM,EAAEpB,QAAQoB,EAAEA,EAAEpB,QAAQoC,GAAGhB,EAAER,GAAE,EAAGQ,EAAEpB,QAAQ,OAAOoC,EAAErB,EAAEc,EAAEO,EAAEpB,EAAEuK,EAAEnJ,EAAEnB,EAAE,SAASY,EAAE0J,EAAE9J,GAAGW,EAAEhB,EAAES,EAAE0J,IAAIlK,OAAOC,eAAeO,EAAE0J,EAAE,CAAChK,YAAW,EAAGC,IAAIC,KAAKW,EAAEX,EAAE,SAASI,GAAG,oBAAoBH,QAAQA,OAAOC,aAAaN,OAAOC,eAAeO,EAAEH,OAAOC,YAAY,CAACC,MAAM,WAAWP,OAAOC,eAAeO,EAAE,aAAa,CAACD,OAAM,KAAMQ,EAAEP,EAAE,SAASA,EAAE0J,GAAG,GAAG,EAAEA,IAAI1J,EAAEO,EAAEP,IAAI,EAAE0J,EAAE,OAAO1J,EAAE,GAAG,EAAE0J,GAAG,iBAAiB1J,GAAGA,GAAGA,EAAEE,WAAW,OAAOF,EAAE,IAAIJ,EAAEJ,OAAOY,OAAO,MAAM,GAAGG,EAAEX,EAAEA,GAAGJ,OAAOC,eAAeG,EAAE,UAAU,CAACF,YAAW,EAAGK,MAAMC,IAAI,EAAE0J,GAAG,iBAAiB1J,EAAE,IAAI,IAAIT,KAAKS,EAAEO,EAAEnB,EAAEQ,EAAEL,EAAE,SAASmK,GAAG,OAAO1J,EAAE0J,IAAIpJ,KAAK,KAAKf,IAAI,OAAOK,GAAGW,EAAEA,EAAE,SAASP,GAAG,IAAI0J,EAAE1J,GAAGA,EAAEE,WAAW,WAAW,OAAOF,EAAEiV,SAAS,WAAW,OAAOjV,GAAG,OAAOO,EAAEnB,EAAEsK,EAAE,IAAIA,GAAGA,GAAGnJ,EAAEhB,EAAE,SAASS,EAAE0J,GAAG,OAAOlK,OAAOkB,UAAUC,eAAe1B,KAAKe,EAAE0J,IAAInJ,EAAEK,EAAE,GAAGL,EAAEA,EAAEM,EAAE,GAAj5B,CAAq5B,CAAC,SAASb,EAAE0J,EAAEnJ,GAAGP,EAAE7B,QAAQoC,EAAE,EAAFA,IAAQ,SAASmJ,EAAEnJ,GAAGmJ,EAAEvL,QAAQ6B,GAAG,SAASA,EAAEO,GAAGP,EAAE7B,QAAQuL,GAAG,SAAS1J,EAAE0J,EAAEnJ,GAAG,IAAIX;;;;;GAK31C,WAAW,aAAa,IAAIW,EAAE,GAAGI,eAAe,SAASpB,IAAI,IAAI,IAAIS,EAAE,GAAG0J,EAAE,EAAEA,EAAEgK,UAAUvS,OAAOuI,IAAI,CAAC,IAAI9J,EAAE8T,UAAUhK,GAAG,GAAG9J,EAAE,CAAC,IAAI2C,SAAS3C,EAAE,GAAG,WAAW2C,GAAG,WAAWA,EAAEvC,EAAE+D,KAAKnE,QAAQ,GAAG4B,MAAMsG,QAAQlI,IAAIA,EAAEuB,OAAO,CAAC,IAAIrC,EAAES,EAAEwV,MAAM,KAAKnV,GAAGd,GAAGkB,EAAE+D,KAAKjF,QAAQ,GAAG,WAAWyD,EAAE,IAAI,IAAI1B,KAAKjB,EAAEW,EAAEtB,KAAKW,EAAEiB,IAAIjB,EAAEiB,IAAIb,EAAE+D,KAAKlD,IAAI,OAAOb,EAAEgV,KAAK,KAAKhV,EAAE7B,SAASoB,EAAE0V,QAAQ1V,EAAES,EAAE7B,QAAQoB,QAAG,KAAUK,EAAE,WAAW,OAAOL,GAAGwV,MAAMrL,EAAE,OAAO1J,EAAE7B,QAAQyB,GAAhb,IAAub,SAASI,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAEW,EAAE,GAAGhB,EAAEK,EAAEqV,QAAQ1S,EAAE3C,EAAEsV,cAAclV,EAAE7B,QAAQoB,EAAES,EAAE7B,QAAQ8W,QAAQ1V,EAAES,EAAE7B,QAAQ+W,cAAc3S,GAAG,SAASvC,EAAE0J,EAAEnJ,GAAG,aAAa,IAAIX,EAAEW,EAAE,GAAG,SAAShB,KAAK,SAASgD,KAAKA,EAAE4S,kBAAkB5V,EAAES,EAAE7B,QAAQ,WAAW,SAAS6B,EAAEA,EAAE0J,EAAEnJ,EAAEhB,EAAEgD,EAAEzD,GAAG,GAAGA,IAAIc,EAAE,CAAC,IAAIiB,EAAE,IAAIkH,MAAM,mLAAmL,MAAMlH,EAAExB,KAAK,sBAAsBwB,GAAG,SAAS6I,IAAI,OAAO1J,EAAEA,EAAEoV,WAAWpV,EAAE,IAAIO,EAAE,CAACuJ,MAAM9J,EAAEqV,KAAKrV,EAAEuK,KAAKvK,EAAEsV,OAAOtV,EAAEQ,OAAOR,EAAEuV,OAAOvV,EAAEsT,OAAOtT,EAAEwV,IAAIxV,EAAEyV,QAAQ/L,EAAEgM,QAAQ1V,EAAE2V,YAAY3V,EAAE4V,WAAWlM,EAAEmM,KAAK7V,EAAE8V,SAASpM,EAAEqM,MAAMrM,EAAEsM,UAAUtM,EAAEuM,MAAMvM,EAAEwM,MAAMxM,EAAEyM,eAAe5T,EAAE4S,kBAAkB5V,GAAG,OAAOgB,EAAE6V,UAAU7V,EAAEA,IAAI,SAASP,EAAE0J,EAAEnJ,GAAG,aAAaP,EAAE7B,QAAQ,gDAAgD,SAAS6B,EAAE0J,EAAEnJ,GAAG,aAAaA,EAAEX,EAAE8J,GAAG,IAAI9J,EAAEW,EAAE,GAAGhB,EAAEgB,EAAEA,EAAEX,GAAG2C,EAAEhC,EAAE,GAAGzB,EAAEyB,EAAEA,EAAEgC,GAAG1B,EAAEN,EAAE,GAAG8V,EAAE9V,EAAEA,EAAEM,GAAG1B,EAAEoB,EAAE,GAAGxB,EAAEwB,EAAEA,EAAEpB,GAAG,SAASmX,EAAEtW,EAAE0J,GAAG,IAAI,IAAInJ,EAAE,EAAEX,EAAEI,EAAEmB,OAAOZ,EAAEX,EAAEW,IAAI,GAAGmJ,EAAEqL,MAAMrL,EAAE,CAAC1J,EAAEO,GAAGA,EAAEP,IAAI,OAAOA,EAAEO,GAAG,SAASK,EAAEZ,GAAG,MAAM,mBAAmBA,GAAG,sBAAsBR,OAAOkB,UAAUmK,SAAS5L,KAAKe,GAAG,SAASZ,EAAEY,GAAG,MAAM,iBAAiBA,IAAIuW,MAAMvW,GAAG,SAASwH,EAAExH,GAAG,OAAOwW,SAASxW,EAAE,IAAI,SAASoB,EAAEpB,EAAE0J,EAAEnJ,GAAG,GAAGP,EAAE0J,GAAG,OAAO,IAAI3B,MAAM,gBAAgBf,OAAO0C,EAAE,eAAe1C,OAAOzG,EAAE,6CAA6C,IAAIc,EAAE,CAAC,MAAM,SAAS,IAAI,MAAM,SAASmB,EAAExC,EAAE0J,GAAG,OAAOA,EAAE,GAAG1C,OAAO0C,GAAG1C,OAAO,SAAShH,GAAG,IAAI,IAAI0J,EAAE,GAAGnJ,GAAE,EAAGX,EAAE,EAAEA,EAAEI,EAAEmB,OAAOvB,IAAIW,GAAGmJ,GAAG1J,EAAEJ,GAAG6W,cAAclW,GAAE,GAAI,MAAMP,EAAEJ,GAAGW,GAAE,EAAGmJ,GAAG1J,EAAEJ,GAAG,OAAO8J,EAA/G,CAAkH1J,IAAIA,EAAE,IAAId,EAAE,WAAW,IAAIc,EAAE0T,UAAUvS,OAAO,QAAG,IAASuS,UAAU,GAAGA,UAAU,GAAG,YAAY,GAAG,oBAAoBlV,aAAQ,IAASA,OAAOkY,SAAS,MAAM,GAAG,IAAIhN,EAAElL,OAAOkY,SAASC,gBAAgBC,MAAM,GAAG5W,KAAK0J,EAAE,MAAM,GAAG,IAAI,IAAInJ,EAAE,EAAEA,EAAEc,EAAEF,OAAOZ,IAAI,GAAGiC,EAAExC,EAAEqB,EAAEd,MAAMmJ,EAAE,OAAOrI,EAAEd,GAAG,MAAM,GAAlR,GAAwR,SAASsW,EAAE7W,EAAE0J,GAAG,IAAInJ,EAAEf,OAAOwL,KAAKhL,GAAG,GAAGR,OAAOoM,sBAAsB,CAAC,IAAIhM,EAAEJ,OAAOoM,sBAAsB5L,GAAG0J,IAAI9J,EAAEA,EAAEuF,QAAO,SAASuE,GAAG,OAAOlK,OAAOsX,yBAAyB9W,EAAE0J,GAAGhK,eAAca,EAAEwD,KAAKgR,MAAMxU,EAAEX,GAAG,OAAOW,EAAE,SAASoB,EAAE3B,EAAE0J,EAAEnJ,GAAG,OAAOmJ,KAAK1J,EAAER,OAAOC,eAAeO,EAAE0J,EAAE,CAAC3J,MAAMQ,EAAEb,YAAW,EAAGqX,cAAa,EAAGC,UAAS,IAAKhX,EAAE0J,GAAGnJ,EAAEP,EAAE,IAAIiX,EAAE,GAAG,SAASC,EAAElX,EAAE0J,GAAG,OAAOuN,IAAIA,EAAEX,EAAE,CAAC,UAAU,wBAAwB,qBAAqB,oBAAoB,qBAAoB,SAAS5M,GAAG,OAAO9I,EAAEZ,EAAE0J,UAAS9I,EAAEZ,EAAEiX,KAAKjX,EAAEiX,GAAGvN,GAAG,SAASyN,EAAEnX,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAEI,EAAE,EAAE,CAAC,GAAGkX,EAAEtX,EAAE8J,GAAG,OAAM,EAAG,GAAG9J,IAAIW,EAAE,OAAM,EAAGX,EAAEA,EAAEwX,iBAAiBxX,GAAG,OAAM,EAAG,SAASgC,EAAE5B,EAAE0J,EAAEnJ,GAAGP,IAAIA,EAAEqX,YAAYrX,EAAEqX,YAAY,KAAK3N,EAAEnJ,GAAGP,EAAEsX,iBAAiBtX,EAAEsX,iBAAiB5N,EAAEnJ,GAAE,GAAIP,EAAE,KAAK0J,GAAGnJ,GAAG,SAASgX,EAAEvX,EAAE0J,EAAEnJ,GAAGP,IAAIA,EAAEwX,YAAYxX,EAAEwX,YAAY,KAAK9N,EAAEnJ,GAAGP,EAAEyX,oBAAoBzX,EAAEyX,oBAAoB/N,EAAEnJ,GAAE,GAAIP,EAAE,KAAK0J,GAAG,MAAM,SAAS1B,EAAEhI,GAAG,IAAI0J,EAAE1J,EAAE0X,aAAanX,EAAEP,EAAE2X,cAAcC,YAAYC,iBAAiB7X,GAAG,OAAO0J,GAAGlC,EAAEjH,EAAEuX,iBAAmBtQ,EAAEjH,EAAEwX,mBAAmB,SAASC,EAAEhY,GAAG,IAAI0J,EAAE1J,EAAEiY,YAAY1X,EAAEP,EAAE2X,cAAcC,YAAYC,iBAAiB7X,GAAG,OAAO0J,GAAGlC,EAAEjH,EAAE2X,kBAAoB1Q,EAAEjH,EAAE4X,kBAAkB,SAASC,EAAEpY,GAAG,IAAI0J,EAAE1J,EAAE0X,aAAanX,EAAEP,EAAE2X,cAAcC,YAAYC,iBAAiB7X,GAAG,OAAO0J,GAAGlC,EAAEjH,EAAE8X,aAAe7Q,EAAEjH,EAAE+X,eAAe,SAASC,EAAEvY,GAAG,IAAI0J,EAAE1J,EAAEiY,YAAY1X,EAAEP,EAAE2X,cAAcC,YAAYC,iBAAiB7X,GAAG,OAAO0J,GAAGlC,EAAEjH,EAAEiY,cAAgBhR,EAAEjH,EAAEkY,cAAc,SAASC,EAAE1Y,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAEI,EAAE4B,EAAErC,EAAES,EAAEoB,EAAEmB,EAAE,aAAayE,OAAOpH,GAAGoH,OAAOzG,EAAE,KAAKyG,OAAOzH,GAAGyH,OAAOzG,EAAE,KAAK,GAAGmJ,EAAE,CAAC,IAAI5K,EAAE,GAAGkI,OAAO,iBAAiB0C,EAAE9H,EAAE8H,EAAE9H,EAAE8H,EAAE9H,EAAErB,GAAGM,EAAE,GAAGmG,OAAO,iBAAiB0C,EAAEtI,EAAEsI,EAAEtI,EAAEsI,EAAEtI,EAAEb,GAAGgC,EAAE,aAAayE,OAAOlI,EAAE,MAAMkI,OAAOnG,EAAE,KAAK0B,EAAE,OAAOA,EAAE,SAASoW,EAAE3Y,GAAG,GAAGA,EAAE,CAAC,IAAI0J,EAAEnJ,EAAEX,EAAEI,EAAE4Y,eAAe,4BAA4BhZ,KAAKA,EAAEI,EAAE6Y,cAAc,UAAU9F,KAAK,WAAWnT,EAAEqF,GAAG,2BAA2BrF,EAAEkZ,UAAU,6EAA6ElZ,EAAEkZ,WAAW,wEAAwE9Y,EAAE+Y,qBAAqB,QAAQ,GAAGC,YAAYpZ,IAAII,EAAEiZ,OAAgB1Y,EAAE,yCAAXmJ,EAAE1J,EAAEiZ,MAAiDC,UAAUxP,EAAEwP,UAAUvL,IAAIpN,GAAGmJ,EAAEyP,UAAUC,MAAM,IAAIhO,OAAO,YAAYpE,OAAOzG,EAAE,eAAemJ,EAAEyP,WAAW,IAAInS,OAAOzG,MAAM,SAAS8Y,EAAErZ,GAAG,IAAIA,GAAGA,EAAEiZ,OAAOvP,EAAE1J,EAAEiZ,KAAK1Y,EAAE,wCAAwCmJ,EAAEwP,UAAUxP,EAAEwP,UAAUI,OAAO/Y,GAAGmJ,EAAEyP,UAAUzP,EAAEyP,UAAU9N,QAAQ,IAAID,OAAO,YAAYpE,OAAOzG,EAAE,WAAW,KAAK,KAAKP,EAAEuZ,UAAUvZ,EAAEuZ,UAAUC,QAAQhb,OAAOib,eAAeC,kBAAkB,MAAM1Z,IAAI,IAAI0J,EAAEnJ,EAAE,SAASoZ,IAAI,OAAO,SAAS3Z,GAAG,IAAI,IAAI0J,EAAE,EAAEA,EAAEgK,UAAUvS,OAAOuI,IAAI,CAAC,IAAInJ,EAAE,MAAMmT,UAAUhK,GAAGgK,UAAUhK,GAAG,GAAGA,EAAE,EAAEmN,EAAEtW,GAAE,GAAI8G,SAAQ,SAASqC,GAAG/H,EAAE3B,EAAE0J,EAAEnJ,EAAEmJ,OAAMlK,OAAOoa,0BAA0Bpa,OAAOqa,iBAAiB7Z,EAAER,OAAOoa,0BAA0BrZ,IAAIsW,EAAEtW,GAAG8G,SAAQ,SAASqC,GAAGlK,OAAOC,eAAeO,EAAE0J,EAAElK,OAAOsX,yBAAyBvW,EAAEmJ,OAAM,OAAO1J,EAAzU,CAA4U,CAAC8Z,YAAY,QAAQpG,UAAUvS,OAAO,QAAG,IAASuS,UAAU,GAAGA,UAAU,GAAG,IAAI,SAASqG,EAAE/Z,GAAG,MAAM,SAASA,EAAEyH,MAAMpD,MAAM,MAAMrE,EAAEyH,MAAMpD,KAAK,SAAS2V,EAAEha,GAAG,MAAM,SAASA,EAAEyH,MAAMpD,MAAM,MAAMrE,EAAEyH,MAAMpD,KAAK,SAAS4V,EAAEja,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAE,iBAAiB8J,EAAE,SAAS1J,EAAE0J,GAAG,OAAO1J,EAAEka,eAAe5D,EAAEtW,EAAEka,eAAc,SAASla,GAAG,OAAO0J,IAAI1J,EAAEma,eAAcna,EAAEoa,gBAAgB9D,EAAEtW,EAAEoa,gBAAe,SAASpa,GAAG,OAAO0J,IAAI1J,EAAEma,cAA7J,CAA2Kna,EAAE0J,GAAG,KAAK,GAAG,iBAAiBA,IAAI9J,EAAE,OAAO,KAAK,IAAIL,EAAE8a,EAAE9Z,GAAG,OAAO,SAASP,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAE8J,IAAIA,EAAEiO,cAAcsB,KAAK,CAAClW,KAAK,EAAEC,IAAI,GAAG0G,EAAE4Q,wBAAwB,MAAM,CAAC1Y,GAAG5B,EAAEua,QAAQ7Q,EAAE8Q,WAAW5a,EAAEmD,MAAMxC,EAAEa,GAAGpB,EAAEya,QAAQ/Q,EAAEgR,UAAU9a,EAAEoD,KAAKzC,GAAnK,CAAuKX,GAAGI,EAAEO,EAAEkH,MAAMkT,cAAcpb,EAAEob,cAAcpb,EAAEoY,cAAcsB,KAAK1Y,EAAEkH,MAAMmT,OAAO,SAASC,EAAE7a,EAAE0J,EAAEnJ,GAAG,IAAIX,EAAEI,EAAE8a,MAAMvb,GAAGH,EAAEQ,EAAEmb,OAAOxY,EAAE8X,EAAEra,GAAG,OAAOT,EAAE,CAACsW,KAAKtT,EAAEyY,OAAO,EAAEC,OAAO,EAAEF,MAAMrR,EAAEwR,MAAM3a,EAAEqB,EAAE8H,EAAEtI,EAAEb,GAAG,CAACsV,KAAKtT,EAAEyY,OAAOtR,EAAE9J,EAAEmb,MAAME,OAAO1a,EAAEX,EAAEsb,MAAMH,MAAMnb,EAAEmb,MAAMG,MAAMtb,EAAEsb,MAAMtZ,EAAE8H,EAAEtI,EAAEb,GAAG,SAAS4a,EAAEnb,EAAE0J,GAAG,IAAInJ,EAAEP,EAAEyH,MAAMmT,MAAM,MAAM,CAAC/E,KAAKnM,EAAEmM,KAAKjU,EAAE5B,EAAE8a,MAAMlZ,EAAE8H,EAAEsR,OAAOza,EAAEa,EAAEpB,EAAE8a,MAAM1Z,EAAEsI,EAAEuR,OAAO1a,EAAEya,OAAOtR,EAAEsR,OAAOza,EAAE0a,OAAOvR,EAAEuR,OAAO1a,EAAEwa,MAAM/a,EAAE8a,MAAMlZ,EAAEsZ,MAAMlb,EAAE8a,MAAM1Z,GAAG,SAASiZ,EAAEra,GAAG,IAAI0J,EAAE2M,EAAE9T,EAAE6Y,YAAYpb,GAAG,IAAI0J,EAAE,MAAM,IAAI3B,MAAM,4CAA4C,OAAO2B,EAAE,SAAS2R,EAAErb,GAAG,OAAOqb,EAAE,mBAAmBxb,QAAQ,iBAAiBA,OAAOyb,SAAS,SAAStb,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBH,QAAQG,EAAEuR,cAAc1R,QAAQG,IAAIH,OAAOa,UAAU,gBAAgBV,IAAIA,GAAG,SAASub,EAAEvb,EAAE0J,GAAG,OAAO,SAAS1J,GAAG,GAAGwB,MAAMsG,QAAQ9H,GAAG,OAAOA,EAAvC,CAA0CA,IAAI,SAASA,EAAE0J,GAAG,IAAInJ,EAAE,GAAGX,GAAE,EAAGL,GAAE,EAAGgD,OAAE,EAAO,IAAI,IAAI,IAAIzD,EAAE+B,EAAEb,EAAEH,OAAOyb,cAAc1b,GAAGd,EAAE+B,EAAE2a,QAAQC,QAAQlb,EAAEwD,KAAKjF,EAAEiB,QAAQ2J,GAAGnJ,EAAEY,SAASuI,GAAG9J,GAAE,IAAK,MAAMI,GAAGT,GAAE,EAAGgD,EAAEvC,EAAE,QAAQ,IAAIJ,GAAG,MAAMiB,EAAE6a,QAAQ7a,EAAE6a,SAAS,QAAQ,GAAGnc,EAAE,MAAMgD,GAAG,OAAOhC,EAA1O,CAA6OP,EAAE0J,IAAI,WAAW,MAAM,IAAIiS,UAAU,wDAA/B,GAA0F,SAASC,EAAE5b,EAAE0J,GAAG,IAAI,IAAInJ,EAAE,EAAEA,EAAEmJ,EAAEvI,OAAOZ,IAAI,CAAC,IAAIX,EAAE8J,EAAEnJ,GAAGX,EAAEF,WAAWE,EAAEF,aAAY,EAAGE,EAAEmX,cAAa,EAAG,UAAUnX,IAAIA,EAAEoX,UAAS,GAAIxX,OAAOC,eAAeO,EAAEJ,EAAES,IAAIT,IAAI,SAASic,EAAE7b,GAAG,OAAO6b,EAAErc,OAAOsc,eAAetc,OAAOuc,eAAe,SAAS/b,GAAG,OAAOA,EAAEgc,WAAWxc,OAAOuc,eAAe/b,KAAKA,GAAG,SAASic,EAAEjc,GAAG,QAAG,IAASA,EAAE,MAAM,IAAIkc,eAAe,6DAA6D,OAAOlc,EAAE,SAASmc,EAAEnc,EAAE0J,GAAG,OAAOyS,EAAE3c,OAAOsc,gBAAgB,SAAS9b,EAAE0J,GAAG,OAAO1J,EAAEgc,UAAUtS,EAAE1J,IAAIA,EAAE0J,GAAG,SAAS0S,EAAEpc,EAAE0J,EAAEnJ,GAAG,OAAOmJ,KAAK1J,EAAER,OAAOC,eAAeO,EAAE0J,EAAE,CAAC3J,MAAMQ,EAAEb,YAAW,EAAGqX,cAAa,EAAGC,UAAS,IAAKhX,EAAE0J,GAAGnJ,EAAEP,EAAE,IAAIqc,EAAS,CAACC,MAAM,aAAaC,KAAK,YAAYC,KAAK,YAAnDH,EAAqE,CAACC,MAAM,YAAYC,KAAK,YAAYC,KAAK,WAAYC,EAAEJ,EAAQK,EAAE,SAAS1c,GAAG,SAAS0J,IAAI,IAAI1J,EAAEO,EAAEX,EAAEL,GAAG,SAASS,EAAE0J,GAAG,KAAK1J,aAAa0J,GAAG,MAAM,IAAIiS,UAAU,qCAAvD,CAA6FxO,KAAKzD,GAAG,IAAI,IAAInH,EAAEmR,UAAUvS,OAAOrC,EAAE,IAAI0C,MAAMe,GAAG1B,EAAE,EAAEA,EAAE0B,EAAE1B,IAAI/B,EAAE+B,GAAG6S,UAAU7S,GAAG,OAAOjB,EAAEuN,KAAK5N,GAAGS,EAAE6b,EAAEnS,IAAIzK,KAAK8V,MAAM/U,EAAE,CAACmN,MAAMnG,OAAOlI,IAAIyB,GAAGhB,GAAG,WAAW8b,EAAE9b,IAAI,mBAAmBA,EAAE0c,EAAErc,GAAGL,EAAE6c,EAAEH,EAAE1b,GAAG,QAAQ,CAACoc,UAAS,EAAG5B,MAAM6B,IAAI1B,MAAM0B,IAAIC,gBAAgB,OAAOT,EAAEH,EAAE1b,GAAG,mBAAkB,SAASP,GAAG,GAAGO,EAAEkH,MAAMqV,YAAY9c,IAAIO,EAAEkH,MAAMsV,eAAe,iBAAiB/c,EAAEgd,QAAQ,IAAIhd,EAAEgd,OAAO,OAAM,EAAG,IAAItT,EAAE2M,EAAE9T,EAAE6Y,YAAYa,EAAE1b,IAAI,IAAImJ,IAAIA,EAAEiO,gBAAgBjO,EAAEiO,cAAcsB,KAAK,MAAM,IAAIlR,MAAM,6CAA6C,IAAInI,EAAE8J,EAAEiO,cAAc,KAAKpX,EAAEkH,MAAMwV,YAAYjd,EAAEkd,kBAAkBtd,EAAEgY,YAAYuF,OAAO5c,EAAEkH,MAAM2V,SAASjG,EAAEnX,EAAEkd,OAAO3c,EAAEkH,MAAM2V,OAAO1T,IAAInJ,EAAEkH,MAAM4V,QAAQlG,EAAEnX,EAAEkd,OAAO3c,EAAEkH,MAAM4V,OAAO3T,IAAI,CAAC,IAAInK,EAAE,SAASS,GAAG,OAAOA,EAAEka,eAAela,EAAEka,cAAc,GAAGla,EAAEka,cAAc,GAAGC,WAAWna,EAAEoa,gBAAgBpa,EAAEoa,eAAe,GAAGpa,EAAEoa,eAAe,GAAGD,gBAAW,EAA1J,CAAkKna,GAAGO,EAAE+c,SAAS,CAACT,gBAAgBtd,IAAI,IAAIgD,EAAE0X,EAAEja,EAAET,EAAE0c,EAAE1b,IAAI,GAAG,MAAMgC,EAAE,CAAC,IAAIzD,EAAEyD,EAAEX,EAAEf,EAAE0B,EAAEnB,EAAEjC,EAAE0b,EAAEoB,EAAE1b,GAAGzB,EAAE+B,GAAGN,EAAEkH,MAAM8V,SAAQ,IAAKhd,EAAEkH,MAAM8V,QAAQvd,EAAEb,KAAKoB,EAAEkH,MAAM+V,sBAAsB7E,EAAE/Y,GAAGW,EAAE+c,SAAS,CAACX,UAAS,EAAG5B,MAAMjc,EAAEoc,MAAMra,IAAIe,EAAEhC,EAAE6c,EAAEF,KAAKhc,EAAEkd,YAAY7b,EAAEhC,EAAE6c,EAAED,KAAKjc,EAAEmd,sBAAqBtB,EAAEH,EAAE1b,GAAG,cAAa,SAASP,GAAG,cAAcA,EAAE+S,MAAM/S,EAAE2d,iBAAiB,IAAIjU,EAAEuQ,EAAEja,EAAEO,EAAEua,MAAM+B,gBAAgBZ,EAAE1b,IAAI,GAAG,MAAMmJ,EAAE,CAAC,IAAI9J,EAAEL,EAAEgD,EAAEzD,EAAE4K,EAAE9H,EAAEf,EAAE6I,EAAEtI,EAAE,GAAGI,MAAMsG,QAAQvH,EAAEkH,MAAMmW,MAAM,CAAC,IAAIvH,EAAEvX,EAAEyB,EAAEua,MAAMC,MAAM5b,EAAE0B,EAAEN,EAAEua,MAAMI,MAAMnc,EAAEwc,GAAG3b,EAAEW,EAAEkH,MAAMmW,KAAKre,EAAE8W,EAAE9T,EAAEpD,EAAE,CAACuF,KAAKmZ,MAAMte,EAAEK,EAAE,IAAIA,EAAE,GAAG8E,KAAKmZ,MAAMtb,EAAE3C,EAAE,IAAIA,EAAE,KAAK,GAAG,GAAGyW,EAAEtX,EAAE,GAAGI,EAAEJ,EAAE,IAAIsX,IAAIlX,EAAE,OAAOL,EAAEyB,EAAEua,MAAMC,MAAM1E,EAAExV,EAAEN,EAAEua,MAAMI,MAAM/b,EAAE,IAAImX,EAAEuE,EAAEoB,EAAE1b,GAAGzB,EAAE+B,GAAG,IAAG,IAAKN,EAAEkH,MAAMqW,OAAO9d,EAAEsW,GAAG/V,EAAE+c,SAAS,CAACvC,MAAMjc,EAAEoc,MAAMra,SAAS,IAAIN,EAAEmd,eAAe,IAAIK,WAAW,YAAY,MAAM/d,GAAG,IAAIY,EAAE8V,SAASsH,YAAY,eAAepd,EAAEqd,eAAe,WAAU,GAAG,EAAGzf,OAAO,EAAE,EAAE,EAAE,EAAE,GAAE,GAAG,GAAG,GAAG,EAAG,EAAE,MAAM+B,EAAEmd,eAAe9c,QAAOwb,EAAEH,EAAE1b,GAAG,kBAAiB,SAASP,GAAG,GAAGO,EAAEua,MAAM6B,SAAS,CAAC,IAAIjT,EAAEuQ,EAAEja,EAAEO,EAAEua,MAAM+B,gBAAgBZ,EAAE1b,IAAI,GAAG,MAAMmJ,EAAE,CAAC,IAAI9J,EAAE8J,EAAE9H,EAAErC,EAAEmK,EAAEtI,EAAEmB,EAAEsY,EAAEoB,EAAE1b,GAAGX,EAAEL,GAAGT,EAAEuX,EAAE9T,EAAE6Y,YAAYa,EAAE1b,IAAIzB,GAAGyB,EAAEkH,MAAM+V,sBAAsBnE,EAAEva,EAAE6Y,eAAepX,EAAE+c,SAAS,CAACX,UAAS,EAAG5B,MAAM6B,IAAI1B,MAAM0B,MAAMrc,EAAEkH,MAAMyW,OAAOle,EAAEuC,GAAGzD,IAAIyY,EAAEzY,EAAE6Y,cAAc8E,EAAEF,KAAKhc,EAAEkd,YAAYlG,EAAEzY,EAAE6Y,cAAc8E,EAAED,KAAKjc,EAAEmd,sBAAqBtB,EAAEH,EAAE1b,GAAG,eAAc,SAASP,GAAG,OAAOyc,EAAEJ,EAAQ9b,EAAE4d,gBAAgBne,MAAKoc,EAAEH,EAAE1b,GAAG,aAAY,SAASP,GAAG,OAAOyc,EAAEJ,EAAQ9b,EAAEmd,eAAe1d,MAAKoc,EAAEH,EAAE1b,GAAG,gBAAe,SAASP,GAAG,OAAOyc,EAAEJ,EAAQ9b,EAAE4d,gBAAgBne,MAAKoc,EAAEH,EAAE1b,GAAG,cAAa,SAASP,GAAG,OAAOyc,EAAEJ,EAAQ9b,EAAEmd,eAAe1d,MAAKO,EAAE,IAAIA,EAAEX,EAAI,OAAO,SAASI,EAAE0J,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiS,UAAU,sDAAsD3b,EAAEU,UAAUlB,OAAOY,OAAOsJ,GAAGA,EAAEhJ,UAAU,CAAC6Q,YAAY,CAACxR,MAAMC,EAAEgX,UAAS,EAAGD,cAAa,KAAMrN,GAAGyS,EAAEnc,EAAE0J,GAA/N,CAAmOA,EAAEnK,EAAEgD,EAAE6b,WAAW7d,EAAEmJ,GAAG9J,EAAE,CAAC,CAACS,IAAI,uBAAuBN,MAAM,WAAW,IAAIC,EAAEqW,EAAE9T,EAAE6Y,YAAYjO,MAAM,GAAGnN,EAAE,CAAC,IAAI0J,EAAE1J,EAAE2X,cAAcJ,EAAE7N,EAAE2S,EAAQE,KAAKpP,KAAKsQ,YAAYlG,EAAE7N,EAAE2S,EAAQE,KAAKpP,KAAKsQ,YAAYlG,EAAE7N,EAAE2S,EAAQG,KAAKrP,KAAKuQ,gBAAgBnG,EAAE7N,EAAE2S,EAAQG,KAAKrP,KAAKuQ,gBAAgBvQ,KAAK1F,MAAM+V,sBAAsBnE,EAAE3P,MAAM,CAACrJ,IAAI,SAASN,MAAM,WAAW,OAAOR,EAAEgD,EAAE8b,aAAa9e,EAAEgD,EAAEI,SAAS2b,KAAKnR,KAAK1F,MAAML,UAAU,CAACwP,MAAM+C,EAAExM,KAAK1F,MAAML,SAASK,MAAMmP,OAAOkG,YAAY3P,KAAK2P,YAAYyB,aAAapR,KAAKoR,aAAaC,UAAUrR,KAAKqR,UAAUC,WAAWtR,KAAKsR,kBAAkB7C,EAAErb,EAAEG,UAAUd,GAAa8J,EAAn2G,GAAw2G,SAASgV,EAAE1e,GAAG,OAAO0e,EAAE,mBAAmB7e,QAAQ,iBAAiBA,OAAOyb,SAAS,SAAStb,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBH,QAAQG,EAAEuR,cAAc1R,QAAQG,IAAIH,OAAOa,UAAU,gBAAgBV,IAAIA,GAAG,SAAS2e,IAAI,OAAOA,EAAEnf,OAAOof,QAAQ,SAAS5e,GAAG,IAAI,IAAI0J,EAAE,EAAEA,EAAEgK,UAAUvS,OAAOuI,IAAI,CAAC,IAAInJ,EAAEmT,UAAUhK,GAAG,IAAI,IAAI9J,KAAKW,EAAEf,OAAOkB,UAAUC,eAAe1B,KAAKsB,EAAEX,KAAKI,EAAEJ,GAAGW,EAAEX,IAAI,OAAOI,IAAI+U,MAAM5H,KAAKuG,WAAixB,SAASmL,EAAG7e,EAAE0J,GAAG,IAAInJ,EAAEf,OAAOwL,KAAKhL,GAAG,GAAGR,OAAOoM,sBAAsB,CAAC,IAAIhM,EAAEJ,OAAOoM,sBAAsB5L,GAAG0J,IAAI9J,EAAEA,EAAEuF,QAAO,SAASuE,GAAG,OAAOlK,OAAOsX,yBAAyB9W,EAAE0J,GAAGhK,eAAca,EAAEwD,KAAKgR,MAAMxU,EAAEX,GAAG,OAAOW,EAAE,SAASue,GAAG9e,GAAG,IAAI,IAAI0J,EAAE,EAAEA,EAAEgK,UAAUvS,OAAOuI,IAAI,CAAC,IAAInJ,EAAE,MAAMmT,UAAUhK,GAAGgK,UAAUhK,GAAG,GAAGA,EAAE,EAAEmV,EAAGte,GAAE,GAAI8G,SAAQ,SAASqC,GAAGqV,GAAG/e,EAAE0J,EAAEnJ,EAAEmJ,OAAMlK,OAAOoa,0BAA0Bpa,OAAOqa,iBAAiB7Z,EAAER,OAAOoa,0BAA0BrZ,IAAIse,EAAGte,GAAG8G,SAAQ,SAASqC,GAAGlK,OAAOC,eAAeO,EAAE0J,EAAElK,OAAOsX,yBAAyBvW,EAAEmJ,OAAM,OAAO1J,EAAE,SAASgf,GAAGhf,GAAG,OAAOgf,GAAGxf,OAAOsc,eAAetc,OAAOuc,eAAe,SAAS/b,GAAG,OAAOA,EAAEgc,WAAWxc,OAAOuc,eAAe/b,KAAKA,GAAG,SAASif,GAAGjf,GAAG,QAAG,IAASA,EAAE,MAAM,IAAIkc,eAAe,6DAA6D,OAAOlc,EAAE,SAASkf,GAAGlf,EAAE0J,GAAG,IAAI,IAAInJ,EAAE,EAAEA,EAAEmJ,EAAEvI,OAAOZ,IAAI,CAAC,IAAIX,EAAE8J,EAAEnJ,GAAGX,EAAEF,WAAWE,EAAEF,aAAY,EAAGE,EAAEmX,cAAa,EAAG,UAAUnX,IAAIA,EAAEoX,UAAS,GAAIxX,OAAOC,eAAeO,EAAEJ,EAAES,IAAIT,IAAI,SAASuf,GAAGnf,EAAE0J,EAAEnJ,GAAG,OAAOmJ,GAAGwV,GAAGlf,EAAEU,UAAUgJ,GAAGnJ,GAAG2e,GAAGlf,EAAEO,GAAGP,EAAE,SAASof,GAAGpf,EAAE0J,GAAG,OAAO0V,GAAG5f,OAAOsc,gBAAgB,SAAS9b,EAAE0J,GAAG,OAAO1J,EAAEgc,UAAUtS,EAAE1J,IAAIA,EAAE0J,GAAG,SAASqV,GAAG/e,EAAE0J,EAAEnJ,GAAG,OAAOmJ,KAAK1J,EAAER,OAAOC,eAAeO,EAAE0J,EAAE,CAAC3J,MAAMQ,EAAEb,YAAW,EAAGqX,cAAa,EAAGC,UAAS,IAAKhX,EAAE0J,GAAGnJ,EAAEP,EAAEoc,EAAEM,EAAE,cAAc,iBAAiBN,EAAEM,EAAE,YAAY,CAACK,cAAcje,EAAEyD,EAAE8S,KAAK4H,SAASne,EAAEyD,EAAE8S,KAAKmI,qBAAqB1e,EAAEyD,EAAE8S,KAAKsF,aAAa,SAAS3a,EAAE0J,GAAG,GAAG1J,EAAE0J,IAAI,IAAI1J,EAAE0J,GAAGP,SAAS,MAAM,IAAIpB,MAAM,iDAAiD6V,KAAK9e,EAAEyD,EAAEkT,QAAQ3W,EAAEyD,EAAE+S,QAAQ8H,OAAOte,EAAEyD,EAAEgT,OAAO8H,OAAOve,EAAEyD,EAAEgT,OAAOgI,QAAQze,EAAEyD,EAAEgI,KAAKuT,OAAOhf,EAAEyD,EAAEgI,KAAK2T,OAAOpf,EAAEyD,EAAEgI,KAAKuS,YAAYhe,EAAEyD,EAAEgI,KAAKqQ,MAAM9b,EAAEyD,EAAE+S,OAAO6D,UAAU/X,EAAEwV,MAAMxV,EAAEmF,UAAUnF,IAAIgb,EAAEM,EAAE,eAAe,CAACK,eAAc,EAAGM,OAAO,KAAKJ,UAAS,EAAGO,sBAAqB,EAAG7C,aAAa,KAAKyC,OAAO,KAAKQ,KAAK,KAAKrX,UAAU,KAAKgX,QAAQ,aAAaO,OAAO,aAAaI,OAAO,aAAapB,YAAY,aAAalC,MAAM,IAAIra,EAAEnB,EAAEsK,EAAE,WAAU,WAAW,OAAO2V,MAAK9e,EAAEnB,EAAEsK,EAAE,iBAAgB,WAAW,OAAOgT,KAAI,IAAI2C,GAAG,SAASrf,GAAG,SAAS0J,EAAE1J,GAAG,IAAIO,EAAIhB,EAAE,OAAO,SAASS,EAAE0J,GAAG,KAAK1J,aAAa0J,GAAG,MAAM,IAAIiS,UAAU,qCAAvD,CAA6FxO,KAAKzD,GAAUnK,EAAEyf,GAAGtV,GAAGzK,KAAKkO,KAAKnN,GAAGO,GAAGhB,GAAG,WAAWmf,EAAEnf,IAAI,mBAAmBA,EAAE0f,GAAtE9R,MAA4E5N,EAAEwf,GAAGE,GAAG1e,GAAG,eAAc,SAASP,EAAE0J,GAAG,IAAG,IAAKnJ,EAAEkH,MAAM8V,QAAQvd,EAAEmb,EAAE8D,GAAG1e,GAAGmJ,IAAI,OAAM,EAAGnJ,EAAE+c,SAAS,CAACX,UAAS,EAAG2C,SAAQ,OAAOP,GAAGE,GAAG1e,GAAG,UAAS,SAASP,EAAE0J,GAAG,IAAInJ,EAAEua,MAAM6B,SAAS,OAAM,EAAG,IAAI/c,EAAEub,EAAE8D,GAAG1e,GAAGmJ,GAAGnK,EAAE,CAACqC,EAAEhC,EAAEgC,EAAER,EAAExB,EAAEwB,GAAG,GAAGb,EAAEkH,MAAM3C,OAAO,CAAC,IAAIvC,EAAEhD,EAAEqC,EAAE9C,EAAES,EAAE6B,EAAE7B,EAAEqC,GAAGrB,EAAEua,MAAMyE,OAAOhgB,EAAE6B,GAAGb,EAAEua,MAAM0E,OAAO,IAAI3e,EAAp3F,SAAWb,EAAE0J,GAAG,OAAO,SAAS1J,GAAG,GAAGwB,MAAMsG,QAAQ9H,GAAG,OAAOA,EAAvC,CAA0CA,IAAI,SAASA,EAAE0J,GAAG,IAAInJ,EAAE,GAAGX,GAAE,EAAGL,GAAE,EAAGgD,OAAE,EAAO,IAAI,IAAI,IAAIzD,EAAE+B,EAAEb,EAAEH,OAAOyb,cAAc1b,GAAGd,EAAE+B,EAAE2a,QAAQC,QAAQlb,EAAEwD,KAAKjF,EAAEiB,QAAQ2J,GAAGnJ,EAAEY,SAASuI,GAAG9J,GAAE,IAAK,MAAMI,GAAGT,GAAE,EAAGgD,EAAEvC,EAAE,QAAQ,IAAIJ,GAAG,MAAMiB,EAAE6a,QAAQ7a,EAAE6a,SAAS,QAAQ,GAAGnc,EAAE,MAAMgD,GAAG,OAAOhC,EAA1O,CAA6OP,EAAE0J,IAAI,WAAW,MAAM,IAAIiS,UAAU,wDAA/B,GAA8jF8D,CAAE,SAASzf,EAAE0J,EAAEnJ,GAAG,IAAIP,EAAEyH,MAAM3C,OAAO,MAAM,CAAC4E,EAAEnJ,GAAG,IAAIX,EAAEI,EAAEyH,MAAM3C,OAAOlF,EAAE,iBAAiBA,EAAEA,EAAE,SAASI,GAAG,MAAM,CAAC+C,KAAK/C,EAAE+C,KAAKC,IAAIhD,EAAEgD,IAAI0c,MAAM1f,EAAE0f,MAAM5e,OAAOd,EAAEc,QAAhE,CAAyElB,GAAG,IAAIL,EAAE8a,EAAEra,GAAG,GAAG,iBAAiBJ,EAAE,CAAC,IAAI2C,EAAEzD,EAAES,EAAEoY,cAAc9W,EAAE/B,EAAE8Y,YAAY,MAAMrV,EAAE,WAAW3C,EAAEL,EAAE6X,WAAWtY,EAAE6gB,cAAc/f,cAAciB,EAAE+e,aAAa,MAAM,IAAI7X,MAAM,oBAAoBnI,EAAE,gCAAgC,IAAIyW,EAAExV,EAAEgX,iBAAiBtY,GAAGJ,EAAE0B,EAAEgX,iBAAiBtV,GAAG3C,EAAE,CAACmD,MAAMxD,EAAEsgB,WAAWrY,EAAErI,EAAEqZ,aAAahR,EAAE6O,EAAEyJ,YAAY9c,KAAKzD,EAAEwgB,UAAUvY,EAAErI,EAAEkZ,YAAY7Q,EAAE6O,EAAE2J,WAAWN,MAAMnH,EAAEhW,GAAGyV,EAAEzY,GAAGA,EAAEsgB,WAAWrY,EAAErI,EAAEsZ,cAAcjR,EAAE6O,EAAE4J,aAAanf,OAAOsX,EAAE7V,GAAGyF,EAAEzI,GAAGA,EAAEwgB,UAAUvY,EAAErI,EAAEmZ,eAAe9Q,EAAE6O,EAAE6J,eAAe,OAAO9gB,EAAEQ,EAAE8f,SAAShW,EAAEhF,KAAKC,IAAI+E,EAAE9J,EAAE8f,QAAQtgB,EAAEQ,EAAEkB,UAAUP,EAAEmE,KAAKC,IAAIpE,EAAEX,EAAEkB,SAAS1B,EAAEQ,EAAEmD,QAAQ2G,EAAEhF,KAAKzD,IAAIyI,EAAE9J,EAAEmD,OAAO3D,EAAEQ,EAAEoD,OAAOzC,EAAEmE,KAAKzD,IAAIV,EAAEX,EAAEoD,MAAM,CAAC0G,EAAEnJ,GAA1zB,CAA8zB0e,GAAG1e,GAAGhB,EAAEqC,EAAErC,EAAE6B,GAAG,GAAGiV,EAAExV,EAAE,GAAG1B,EAAE0B,EAAE,GAAGtB,EAAEqC,EAAEyU,EAAE9W,EAAE6B,EAAEjC,EAAEI,EAAEggB,OAAOhf,EAAEua,MAAMyE,QAAQhd,EAAEhD,EAAEqC,GAAGrC,EAAEigB,OAAOjf,EAAEua,MAAM0E,QAAQ1gB,EAAES,EAAE6B,GAAGxB,EAAEgC,EAAErC,EAAEqC,EAAEhC,EAAEwB,EAAE7B,EAAE6B,EAAExB,EAAEob,OAAOzb,EAAEqC,EAAErB,EAAEua,MAAMlZ,EAAEhC,EAAEqb,OAAO1b,EAAE6B,EAAEb,EAAEua,MAAM1Z,EAAE,IAAG,IAAKb,EAAEkH,MAAMqW,OAAO9d,EAAEJ,GAAG,OAAM,EAAGW,EAAE+c,SAAS/d,MAAKwf,GAAGE,GAAG1e,GAAG,cAAa,SAASP,EAAE0J,GAAG,IAAInJ,EAAEua,MAAM6B,SAAS,OAAM,EAAG,IAAG,IAAKpc,EAAEkH,MAAMyW,OAAOle,EAAEmb,EAAE8D,GAAG1e,GAAGmJ,IAAI,OAAM,EAAG,IAAI9J,EAAE,CAAC+c,UAAS,EAAG4C,OAAO,EAAEC,OAAO,GAAG,GAAGtd,QAAQ3B,EAAEkH,MAAMb,UAAU,CAAC,IAAIrH,EAAEgB,EAAEkH,MAAMb,SAASrE,EAAEhD,EAAEqC,EAAE9C,EAAES,EAAE6B,EAAExB,EAAEgC,EAAEW,EAAE3C,EAAEwB,EAAEtC,EAAEyB,EAAE+c,SAAS1d,MAAKW,EAAEua,MAAM,CAAC6B,UAAS,EAAG2C,SAAQ,EAAG1d,EAAE5B,EAAE4G,SAAS5G,EAAE4G,SAAShF,EAAE5B,EAAEmgB,gBAAgBve,EAAER,EAAEpB,EAAE4G,SAAS5G,EAAE4G,SAASxF,EAAEpB,EAAEmgB,gBAAgB/e,EAAEgf,kBAAkBtB,GAAG,GAAG9e,EAAE4G,UAAU2Y,OAAO,EAAEC,OAAO,EAAEa,cAAa,IAAKrgB,EAAE4G,UAAU5G,EAAE8d,QAAQ9d,EAAEke,QAAQoC,QAAQC,KAAK,6NAA6NhgB,EAAE,OAAO,SAASP,EAAE0J,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiS,UAAU,sDAAsD3b,EAAEU,UAAUlB,OAAOY,OAAOsJ,GAAGA,EAAEhJ,UAAU,CAAC6Q,YAAY,CAACxR,MAAMC,EAAEgX,UAAS,EAAGD,cAAa,KAAMrN,GAAG0V,GAAGpf,EAAE0J,GAAhO,CAAoOA,EAAEnK,EAAEgD,EAAE6b,WAAWe,GAAGzV,EAAE,KAAK,CAAC,CAACrJ,IAAI,2BAA2BN,MAAM,SAASC,EAAE0J,GAAG,IAAInJ,EAAEP,EAAE4G,SAAShH,EAAE8J,EAAE0W,kBAAkB,OAAO7f,GAAGX,GAAGW,EAAEqB,IAAIhC,EAAEgC,GAAGrB,EAAEa,IAAIxB,EAAEwB,EAAE,KAAK,CAACQ,EAAErB,EAAEqB,EAAER,EAAEb,EAAEa,EAAEgf,kBAAkBtB,GAAG,GAAGve,QAAQ4e,GAAGzV,EAAE,CAAC,CAACrJ,IAAI,oBAAoBN,MAAM,gBAAW,IAASvB,OAAOgiB,YAAYnK,EAAE9T,EAAE6Y,YAAYjO,gBAAgB3O,OAAOgiB,YAAYrT,KAAKmQ,SAAS,CAAC+C,cAAa,MAAO,CAAChgB,IAAI,uBAAuBN,MAAM,WAAWoN,KAAKmQ,SAAS,CAACX,UAAS,MAAO,CAACtc,IAAI,SAASN,MAAM,WAAW,IAAIC,EAAE0J,EAAEyD,KAAK1F,MAAMlH,GAAGmJ,EAAErF,KAAKqF,EAAE5E,OAAO4E,EAAEtC,UAAUxH,EAAE8J,EAAEyW,gBAAgB5d,EAAEmH,EAAE+W,iBAAiB3hB,EAAE4K,EAAEgX,yBAAyB7f,EAAE6I,EAAEiX,wBAAwBtK,EAAE3M,EAAE9C,SAASzH,EAAEuK,EAAEkX,eAAetK,GAAG5M,EAAEkR,MAAx0L,SAAW5a,EAAE0J,GAAG,GAAG,MAAM1J,EAAE,MAAM,GAAG,IAAIO,EAAEX,EAAEL,EAAE,SAASS,EAAE0J,GAAG,GAAG,MAAM1J,EAAE,MAAM,GAAG,IAAIO,EAAEX,EAAEL,EAAE,GAAGgD,EAAE/C,OAAOwL,KAAKhL,GAAG,IAAIJ,EAAE,EAAEA,EAAE2C,EAAEpB,OAAOvB,IAAIW,EAAEgC,EAAE3C,GAAG8J,EAAE1F,QAAQzD,IAAI,IAAIhB,EAAEgB,GAAGP,EAAEO,IAAI,OAAOhB,EAAlI,CAAqIS,EAAE0J,GAAG,GAAGlK,OAAOoM,sBAAsB,CAAC,IAAIrJ,EAAE/C,OAAOoM,sBAAsB5L,GAAG,IAAIJ,EAAE,EAAEA,EAAE2C,EAAEpB,OAAOvB,IAAIW,EAAEgC,EAAE3C,GAAG8J,EAAE1F,QAAQzD,IAAI,GAAGf,OAAOkB,UAAU8K,qBAAqBvM,KAAKe,EAAEO,KAAKhB,EAAEgB,GAAGP,EAAEO,IAAI,OAAOhB,EAA49KshB,CAAEnX,EAAE,CAAC,OAAO,SAAS,WAAW,kBAAkB,mBAAmB,2BAA2B,0BAA0B,WAAW,iBAAiB,WAAW9I,EAAE,GAAGxB,EAAE,KAAKoI,GAAGtF,QAAQmU,IAAIlJ,KAAK2N,MAAM6B,SAASvb,EAAEiV,GAAGzW,EAAEyB,EAAE,CAACO,EAAEmY,EAAE5M,OAAO3F,EAAE2F,KAAK2N,MAAMlZ,EAAER,EAAEQ,EAAER,EAAE4Y,EAAE7M,OAAO3F,EAAE2F,KAAK2N,MAAM1Z,EAAEA,EAAEA,GAAG+L,KAAK2N,MAAMuF,aAAajhB,EAAE,SAASY,EAAE0J,GAAG,OAAOgP,EAAE1Y,EAAE0J,EAAE,IAA3B,CAAgCrI,EAAElC,GAAGyB,EAAE,SAASZ,EAAE0J,GAAG,IAAInJ,EAAEmY,EAAE1Y,EAAE0J,EAAE,MAAM,OAAO/H,EAAE,GAAGa,EAAE,YAAYtD,GAAGqB,GAA7D,CAAiEc,EAAElC,GAAG,IAAI0X,EAAE9X,IAAIwB,EAAEkH,MAAM0R,WAAW,GAAG5W,GAAGwc,GAAG/e,EAAE,GAAGlB,EAAEqO,KAAK2N,MAAM6B,UAAUoC,GAAG/e,EAAEa,EAAEsM,KAAK2N,MAAMwE,SAAStf,IAAI,OAAOT,EAAEgD,EAAEsW,cAAc6D,EAAEiC,EAAE,GAAGrI,EAAE,CAACiH,QAAQpQ,KAAK2T,YAAYhD,OAAO3Q,KAAK2Q,OAAOI,OAAO/Q,KAAK4T,aAAaxhB,EAAEgD,EAAE8b,aAAa9e,EAAEgD,EAAEI,SAAS2b,KAAK/d,GAAG,CAAC4Y,UAAUtC,EAAED,MAAMkI,GAAG,GAAGve,EAAEkH,MAAMmP,MAAM,GAAGhW,GAAG2F,UAAUnH,SAASsK,EAA5zH,GAAi0HqV,GAAGM,GAAG,cAAc,aAAaN,GAAGM,GAAG,YAAYP,GAAG,GAAGpC,EAAEsE,UAAU,CAAC3c,KAAKvF,EAAEyD,EAAEwT,MAAM,CAAC,OAAO,IAAI,IAAI,SAASjR,OAAOhG,EAAEyD,EAAEyT,UAAU,CAAClX,EAAEyD,EAAE0T,MAAM,CAAClT,KAAKjE,EAAEyD,EAAE+S,OAAOoK,MAAM5gB,EAAEyD,EAAE+S,OAAOtS,IAAIlE,EAAEyD,EAAE+S,OAAOxU,OAAOhC,EAAEyD,EAAE+S,SAASxW,EAAEyD,EAAEgT,OAAOzW,EAAEyD,EAAEwT,MAAM,EAAC,MAAO0K,iBAAiB3hB,EAAEyD,EAAEgT,OAAOmL,yBAAyB5hB,EAAEyD,EAAEgT,OAAOoL,wBAAwB7hB,EAAEyD,EAAEgT,OAAO4K,gBAAgBrhB,EAAEyD,EAAE0T,MAAM,CAACrU,EAAE9C,EAAEyD,EAAE+S,OAAOlU,EAAEtC,EAAEyD,EAAE+S,SAASsL,eAAe9hB,EAAEyD,EAAE0T,MAAM,CAACrU,EAAE9C,EAAEyD,EAAEyT,UAAU,CAAClX,EAAEyD,EAAE+S,OAAOxW,EAAEyD,EAAEgT,SAASnU,EAAEtC,EAAEyD,EAAEyT,UAAU,CAAClX,EAAEyD,EAAE+S,OAAOxW,EAAEyD,EAAEgT,WAAW3O,SAAS9H,EAAEyD,EAAE0T,MAAM,CAACrU,EAAE9C,EAAEyD,EAAE+S,OAAOlU,EAAEtC,EAAEyD,EAAE+S,SAAS6D,UAAU/X,EAAEwV,MAAMxV,EAAEmF,UAAUnF,KAAK2d,GAAGM,GAAG,eAAeP,GAAG,GAAGpC,EAAEuE,aAAa,CAAC5c,KAAK,OAAOS,QAAO,EAAG2b,iBAAiB,kBAAkBC,yBAAyB,2BAA2BC,wBAAwB,0BAA0BR,gBAAgB,CAACve,EAAE,EAAER,EAAE,GAAGwF,SAAS,KAAKgU,MAAM,U,+FCQ/slB,SAASsG,EAAiBC,GAAwC,IAC/DC,EAAmDD,EAAnDC,OAAQC,EAA2CF,EAA3CE,iBAAkBC,EAAyBH,EAAzBG,eAAgB9d,EAAS2d,EAAT3d,KAClD,OACG8d,EAAiBF,EAAO,IAAM5d,EAAO,GAA2B,EAAtB6d,EAAiB,IAAU7d,EAcnE,SAAS+d,EACdJ,EACAvf,EACAR,EACAO,EACAN,EACAyZ,GACU,IACFsG,EAAwCD,EAAxCC,OAAQC,EAAgCF,EAAhCE,iBAAkBG,EAAcL,EAAdK,UAC5BC,EAAWP,EAAiBC,GAC5Btd,EAAM,GAiCZ,OA9BIiX,GAASA,EAAM4G,UACjB7d,EAAIZ,MAAQyB,KAAKmZ,MAAM/C,EAAM4G,SAASze,OACtCY,EAAIX,OAASwB,KAAKmZ,MAAM/C,EAAM4G,SAASxe,UAOvCW,EAAIZ,MACFtB,IAAMggB,IACFhgB,EACA+C,KAAKmZ,MAAM4D,EAAW9f,EAAI+C,KAAKzD,IAAI,EAAGU,EAAI,GAAKyf,EAAO,IAC5Dvd,EAAIX,OACF7B,IAAMsgB,IACFtgB,EACAqD,KAAKmZ,MAAM2D,EAAYngB,EAAIqD,KAAKzD,IAAI,EAAGI,EAAI,GAAK+f,EAAO,KAI3DtG,GAASA,EAAM6B,UACjB9Y,EAAIb,IAAM0B,KAAKmZ,MAAM/C,EAAM6B,SAAS3Z,KACpCa,EAAId,KAAO2B,KAAKmZ,MAAM/C,EAAM6B,SAAS5Z,QAIrCc,EAAIb,IAAM0B,KAAKmZ,OAAO2D,EAAYJ,EAAO,IAAMhgB,EAAIigB,EAAiB,IACpExd,EAAId,KAAO2B,KAAKmZ,OAAO4D,EAAWL,EAAO,IAAMxf,EAAIyf,EAAiB,KAG/Dxd,EAYF,SAAS+d,EACdT,EACAne,EACAD,EACApB,EACAN,GAC0B,IAClB+f,EAAqCD,EAArCC,OAAQ5d,EAA6B2d,EAA7B3d,KAAMge,EAAuBL,EAAvBK,UAAWK,EAAYV,EAAZU,QAC3BJ,EAAWP,EAAiBC,GAS9Bvf,EAAI8C,KAAKmZ,OAAO9a,EAAOqe,EAAO,KAAOK,EAAWL,EAAO,KACvDhgB,EAAIsD,KAAKmZ,OAAO7a,EAAMoe,EAAO,KAAOI,EAAYJ,EAAO,KAM3D,MAAO,CAAExf,EAHTA,EAAI8C,KAAKzD,IAAIyD,KAAKC,IAAI/C,EAAG4B,EAAO7B,GAAI,GAGxBP,EAFZA,EAAIsD,KAAKzD,IAAIyD,KAAKC,IAAIvD,EAAGygB,EAAUxgB,GAAI,I,snDC5BpBygB,E,yLA6FJ,CACbJ,SAAU,KACV/E,SAAU,KACVxD,UAAW,K,mDAkMC,SAACzP,EAAD,GAAoD,IAAvCmM,EAAuC,EAAvCA,KACzB,GAAK,EAAKpO,MAAMqZ,YAAhB,CAEA,IAAMiB,EAA+B,CAAE/e,IAAK,EAAGD,KAAM,GAG7C4X,EAAiB9E,EAAjB8E,aACR,GAAKA,EAAL,CACA,IAAMqH,EAAarH,EAAaL,wBAC1B2H,EAAapM,EAAKyE,wBAClB4H,EAAQD,EAAWlf,KAAO,EAAK0E,MAAM0a,eACrCC,EAAQJ,EAAWjf,KAAO,EAAK0E,MAAM0a,eACrCE,EAAOJ,EAAWjf,IAAM,EAAKyE,MAAM0a,eACnCG,EAAON,EAAWhf,IAAM,EAAKyE,MAAM0a,eACzCJ,EAAYhf,KAAOmf,EAAQE,EAAQzH,EAAaH,WAChDuH,EAAY/e,IAAMqf,EAAOC,EAAO3H,EAAaD,UAC7C,EAAK4C,SAAS,CAAEX,SAAUoF,IAhBsC,MAkB/CH,EACf,EAAKW,oBACLR,EAAY/e,IACZ+e,EAAYhf,KACZ,EAAK0E,MAAM9F,EACX,EAAK8F,MAAMpG,GALLO,EAlBwD,EAkBxDA,EAAGR,EAlBqD,EAkBrDA,EAQX,OACE,EAAKqG,MAAMqZ,aACX,EAAKrZ,MAAMqZ,YAAY7hB,KAAvB,KAAkC,EAAKwI,MAAM3I,EAAG8C,EAAGR,EAAG,CACpDsI,IACAmM,OACAkM,qB,iBAUG,SAACrY,EAAD,GAAoE,IAAvDmM,EAAuD,EAAvDA,KAAMmF,EAAiD,EAAjDA,OAAQC,EAAyC,EAAzCA,OAAyC,EACxC,EAAKxT,MAAhCqW,EADmE,EACnEA,OAAQqE,EAD2D,EAC3DA,eAChB,GAAKrE,EAAL,CACA9C,GAAUmH,EACVlH,GAAUkH,EAEV,IAAMJ,EAA+B,CAAE/e,IAAK,EAAGD,KAAM,GAErD,IAAK,EAAK+X,MAAM6B,SACd,MAAM,IAAI5U,MAAM,qCAClBga,EAAYhf,KAAO,EAAK+X,MAAM6B,SAAS5Z,KAAOiY,EAC9C+G,EAAY/e,IAAM,EAAK8X,MAAM6B,SAAS3Z,IAAMiY,EAC5C,EAAKqC,SAAS,CAAEX,SAAUoF,IAZiD,MAc1DH,EACf,EAAKW,oBACLR,EAAY/e,IACZ+e,EAAYhf,KACZ,EAAK0E,MAAM9F,EACX,EAAK8F,MAAMpG,GALLO,EAdmE,EAcnEA,EAAGR,EAdgE,EAchEA,EAQX,OACE0c,GACAA,EAAO7e,KAAP,KAAkB,EAAKwI,MAAM3I,EAAG8C,EAAGR,EAAG,CACpCsI,IACAmM,OACAkM,oB,qBAUO,SAACrY,EAAD,GAAoD,IAAvCmM,EAAuC,EAAvCA,KACxB,GAAK,EAAKpO,MAAMsZ,WAAhB,CAEA,IAAMgB,EAA+B,CAAE/e,IAAK,EAAGD,KAAM,GAErD,IAAK,EAAK+X,MAAM6B,SACd,MAAM,IAAI5U,MAAM,wCAClBga,EAAYhf,KAAO,EAAK+X,MAAM6B,SAAS5Z,KACvCgf,EAAY/e,IAAM,EAAK8X,MAAM6B,SAAS3Z,IACtC,EAAKsa,SAAS,CAAEX,SAAU,OATqC,MAW9CiF,EACf,EAAKW,oBACLR,EAAY/e,IACZ+e,EAAYhf,KACZ,EAAK0E,MAAM9F,EACX,EAAK8F,MAAMpG,GALLO,EAXuD,EAWvDA,EAAGR,EAXoD,EAWpDA,EAQX,OACE,EAAKqG,MAAMsZ,YACX,EAAKtZ,MAAMsZ,WAAW9hB,KAAtB,KAAiC,EAAKwI,MAAM3I,EAAG8C,EAAGR,EAAG,CACnDsI,IACAmM,OACAkM,oB,uBAUS,SACbrY,EACA8Y,GAEA,EAAKC,gBAAgB/Y,EAAG8Y,EAAc,mB,wBAQxB,SACd9Y,EACA8Y,GAEA,EAAKC,gBAAgB/Y,EAAG8Y,EAAc,oB,mBAQ7B,SACT9Y,EACA8Y,GAEA,EAAKC,gBAAgB/Y,EAAG8Y,EAAc,e,+SAzUlBE,EAAkBC,GAGtC,GAAIxV,KAAK1F,MAAML,WAAasb,EAAUtb,SAAU,OAAO,EAEvD,IAAMwb,EAAcrB,EAClBpU,KAAKoV,kBAAkBpV,KAAK1F,OAC5B0F,KAAK1F,MAAM7F,EACXuL,KAAK1F,MAAMrG,EACX+L,KAAK1F,MAAM9F,EACXwL,KAAK1F,MAAMpG,EACX8L,KAAK2N,OAEDiH,EAAcR,EAClBpU,KAAKoV,kBAAkBG,GACvBA,EAAU9gB,EACV8gB,EAAUthB,EACVshB,EAAU/gB,EACV+gB,EAAUrhB,EACVshB,GAEF,OACG7f,4BAAkB8f,EAAab,IAChC5U,KAAK1F,MAAMob,mBAAqBH,EAAUG,mB,yCAI3BC,GACjB3V,KAAK4V,iBAAiBD,K,uCAKPA,GAAkB,IACzBE,EAAqB7V,KAAK1F,MAA1Bub,iBACFC,EAAuBH,EAAUE,iBAC/BrG,EAAaxP,KAAK2N,MAAlB6B,SAER,GAAKqG,GAAqBC,EAA1B,CAIK9V,KAAK+V,cAER/V,KAAK+V,YAAgBC,IAAS/H,YAAYjO,OAG5C,IAAMiW,EACHzG,GAAYqG,EAAiBjgB,OAASkgB,EAAqBlgB,MAC5DigB,EAAiBhgB,MAAQigB,EAAqBjgB,IAEhD,GAAK2Z,GAME,GAAIyG,EAAY,CACrB,IAAMpI,EAASgI,EAAiBjgB,KAAO4Z,EAAS5Z,KAC1CkY,EAAS+H,EAAiBhgB,IAAM2Z,EAAS3Z,IAE/CmK,KAAK2Q,OAAOkF,EAAiBtZ,EAAG,CAC9BmM,KAAM1I,KAAK+V,YACXlI,SACAC,iBAZF9N,KAAK2T,YAAYkC,EAAiBtZ,EAAG,CACnCmM,KAAM1I,KAAK+V,YACXlI,OAAQgI,EAAiBjgB,KACzBkY,OAAQ+H,EAAiBhgB,S,0CAc8B,IAA3CyE,EAA2C,uDAA5B0F,KAAK1F,MACpC,MAAO,CACLjE,KAAMiE,EAAMjE,KACZ6d,iBAAkB5Z,EAAM4Z,iBACxBC,eAAgB7Z,EAAM6Z,eACtBF,OAAQ3Z,EAAM2Z,OACdS,QAASpa,EAAMoa,QACfL,UAAW/Z,EAAM+Z,a,kCAcT6B,GAA2C,IAGjDzM,EAHiD,EACQzJ,KAAK1F,MAA1D6b,EAD6C,EAC7CA,eAAgBhC,EAD6B,EAC7BA,eAiBxB,OAlBqD,EACbuB,iBAKtCjM,EAAQvQ,uBAAagd,IAGrBzM,EAAQ/P,qBAAWwc,GAGfC,IACF1M,EAAM7T,KAAOoD,eAAKkd,EAAItgB,KAAOue,GAC7B1K,EAAM3T,MAAQkD,eAAKkd,EAAIpgB,MAAQqe,KAI5B1K,I,qCASPtP,EACAlF,GAEA,OACE,kBAAC,gBAAD,CACE6a,UAAW7a,EACXmb,QAASpQ,KAAK2T,YACdhD,OAAQ3Q,KAAK2Q,OACbI,OAAQ/Q,KAAK4T,WACb3D,OAAQjQ,KAAK1F,MAAM2V,OACnBC,OACE,2BACClQ,KAAK1F,MAAM4V,OAAS,IAAMlQ,KAAK1F,MAAM4V,OAAS,IAEjDzC,MAAOzN,KAAK1F,MAAM0a,gBAEjB7a,K,qCAYLA,EACAV,EACAvE,GACmB,MACyC8K,KAAK1F,MAAzDjE,EADW,EACXA,KAAM5B,EADK,EACLA,EAAGC,EADE,EACFA,KAAME,EADJ,EACIA,KAAMD,EADV,EACUA,KAAME,EADhB,EACgBA,KAAMmgB,EADtB,EACsBA,eACnChB,EAAiBhU,KAAKoV,oBAGtBgB,EAAWhC,EAAqBJ,EAAgB,EAAG,EAAG3d,EAAO5B,EAAG,GACnEqB,MAGGugB,EAAOjC,EAAqBJ,EAAgB,EAAG,EAAGtf,EAAME,GACxD0hB,EAAQlC,EAAqBJ,EAAgB,EAAG,EAAGrf,EAAME,GACzD0hB,EAAiB,CAACF,EAAKvgB,MAAOugB,EAAKtgB,QACnCygB,EAAiB,CACrBjf,KAAKC,IAAI8e,EAAMxgB,MAAOsgB,GACtB7e,KAAKC,IAAI8e,EAAMvgB,OAAQye,MAEzB,OACE,kBAAC,YAAD,CACEiC,cAAe,CACb3G,UAAW5a,GAEb8W,UAAW9W,OAAc6D,EAAY,uBACrCjD,MAAO2D,EAAS3D,MAChBC,OAAQ0D,EAAS1D,OACjBwgB,eAAgBA,EAChBC,eAAgBA,EAChBE,aAAc1W,KAAK0W,aACnBC,cAAe3W,KAAK2W,cACpBC,SAAU5W,KAAK4W,SACf5B,eAAgBA,GAEf7a,K,sCAkKLoC,E,EAEAsa,GACA,IAFEnO,EAEF,EAFEA,KAAM1L,EAER,EAFQA,KAGF8Z,EAAU9W,KAAK1F,MAAMuc,GAC3B,GAAKC,EAAL,CAFA,MAGkD9W,KAAK1F,MAA/CjE,EAHR,EAGQA,KAAM5B,EAHd,EAGcA,EAAGR,EAHjB,EAGiBA,EAAGtC,EAHpB,EAGoBA,EAAGgD,EAHvB,EAGuBA,KAAMD,EAH7B,EAG6BA,KAAMG,EAHnC,EAGmCA,KAAMD,EAHzC,EAGyCA,KAHzC,EDnZG,SACLof,EACAle,EACAC,EACAtB,EACAR,GAC0B,IAClBggB,EAAqCD,EAArCC,OAAQS,EAA6BV,EAA7BU,QAASre,EAAoB2d,EAApB3d,KAAMge,EAAcL,EAAdK,UACzBC,EAAWP,EAAiBC,GAK9Bxf,EAAI+C,KAAKmZ,OAAO5a,EAAQme,EAAO,KAAOK,EAAWL,EAAO,KACxD/f,EAAIqD,KAAKmZ,OAAO3a,EAASke,EAAO,KAAOI,EAAYJ,EAAO,KAK9D,MAAO,CAAEzf,EAFTA,EAAI+C,KAAKzD,IAAIyD,KAAKC,IAAIhD,EAAG6B,EAAO5B,GAAI,GAExBP,EADZA,EAAIqD,KAAKzD,IAAIyD,KAAKC,IAAItD,EAAGwgB,EAAUzgB,GAAI,ICuYtB8iB,CACb/W,KAAKoV,oBACLpY,EAAKlH,MACLkH,EAAKjH,OACLtB,EACAR,GALIO,EANN,EAMMA,EAAGN,EANT,EAMSA,EASTM,EAAI+C,KAAKC,IAAIhD,EAAG6B,EAAO5B,GAEvBD,EAAI+C,KAAKzD,IAAIU,EAAG,GAGhBA,EAAI+C,KAAKzD,IAAIyD,KAAKC,IAAIhD,EAAGG,GAAOD,GAChCR,EAAIqD,KAAKzD,IAAIyD,KAAKC,IAAItD,EAAGW,GAAOD,GAEhCoL,KAAKmQ,SAAS,CAAEoE,SAA0B,iBAAhBsC,EAAiC,KAAO7Z,IAElE8Z,EAAQhlB,KAAKkO,KAAMrO,EAAG6C,EAAGN,EAAG,CAAEqI,IAAGmM,OAAM1L,Y,+BAGrB,MAUdgD,KAAK1F,MARP7F,EAFgB,EAEhBA,EACAR,EAHgB,EAGhBA,EACAO,EAJgB,EAIhBA,EACAN,EALgB,EAKhBA,EACAe,EANgB,EAMhBA,YACAC,EAPgB,EAOhBA,YACA2gB,EARgB,EAQhBA,iBACAH,EATgB,EAShBA,iBAGIQ,EAAM9B,EACVpU,KAAKoV,oBACL3gB,EACAR,EACAO,EACAN,EACA8L,KAAK2N,OAEDxT,EAAQ5E,IAAMC,SAAS2b,KAAKnR,KAAK1F,MAAML,UAGzC+c,EAAWzhB,IAAM2b,aAAa/W,EAAO,CACvC6R,UAAWxE,IACT,kBACArN,EAAMG,MAAM0R,UACZhM,KAAK1F,MAAM0R,UACX,CACEhX,OAAQgL,KAAK1F,MAAMtF,OACnBuf,SAAUxf,QAAQiL,KAAK2N,MAAM4G,UAC7B,kBAAmBtf,EACnB,2BAA4BF,QAAQiL,KAAK2N,MAAM6B,UAC/CyH,SAAUliB,QAAQ8gB,GAClBqB,cAAexB,IAInBjM,MAAO,EAAF,GACAzJ,KAAK1F,MAAMmP,MADX,GAEAtP,EAAMG,MAAMmP,MAFZ,GAGAzJ,KAAKmX,YAAYjB,MAUxB,OALAc,EAAWhX,KAAKoX,eAAeJ,EAAUd,EAAKhhB,GAG9C8hB,EAAWhX,KAAKqX,eAAeL,EAAU/hB,Q,8BA1gBPM,IAAM0b,W,EAAvB0D,E,YACA,CAEjB1a,SAAUgP,IAAUV,QAGpBlS,KAAM4S,IAAUd,OAAOF,WACvBkM,eAAgBlL,IAAUd,OAAOF,WACjCoM,UAAWpL,IAAUd,OAAOF,WAC5BgM,OAAQhL,IAAUtM,MAAMsL,WACxByM,QAASzL,IAAUd,OAAOF,WAC1BiM,iBAAkBjL,IAAUtM,MAAMsL,WAGlCxT,EAAGwU,IAAUd,OAAOF,WACpBhU,EAAGgV,IAAUd,OAAOF,WACpBzT,EAAGyU,IAAUd,OAAOF,WACpB/T,EAAG+U,IAAUd,OAAOF,WAGpBvT,KAAM,SAAS4F,EAAcgd,GAC3B,IAAM1kB,EAAQ0H,EAAMgd,GACpB,MAAqB,iBAAV1kB,EAA2B,IAAIgI,MAAM,uBAC5ChI,EAAQ0H,EAAM9F,GAAK5B,EAAQ0H,EAAM3F,KAC5B,IAAIiG,MAAM,iDADnB,GAIFjG,KAAM,SAAS2F,EAAcgd,GAC3B,IAAM1kB,EAAQ0H,EAAMgd,GACpB,MAAqB,iBAAV1kB,EAA2B,IAAIgI,MAAM,uBAC5ChI,EAAQ0H,EAAM9F,GAAK5B,EAAQ0H,EAAM5F,KAC5B,IAAIkG,MAAM,kDADnB,GAIFhG,KAAM,SAAS0F,EAAcgd,GAC3B,IAAM1kB,EAAQ0H,EAAMgd,GACpB,MAAqB,iBAAV1kB,EAA2B,IAAIgI,MAAM,wBAC5ChI,EAAQ0H,EAAMpG,GAAKtB,EAAQ0H,EAAMzF,KAC5B,IAAI+F,MAAM,oDADnB,GAIF/F,KAAM,SAASyF,EAAcgd,GAC3B,IAAM1kB,EAAQ0H,EAAMgd,GACpB,MAAqB,iBAAV1kB,EAA2B,IAAIgI,MAAM,wBAC5ChI,EAAQ0H,EAAMpG,GAAKtB,EAAQ0H,EAAM1F,KAC5B,IAAIgG,MAAM,qDADnB,GAKFjJ,EAAGsX,IAAUb,OAAOH,WAGpB2L,WAAY3K,IAAU7L,KACtBuW,YAAa1K,IAAU7L,KACvBuT,OAAQ1H,IAAU7L,KAClBsZ,aAAczN,IAAU7L,KACxBuZ,cAAe1N,IAAU7L,KACzBwZ,SAAU3N,IAAU7L,KAGpBnI,YAAagU,IAAUf,KAAKD,WAC5B/S,YAAa+T,IAAUf,KAAKD,WAC5BjT,OAAQiU,IAAUf,KAGlBwN,iBAAkBzM,IAAUf,KAAKD,WACjC+M,eAAgB/L,IAAUd,OAG1B6D,UAAW/C,IAAUb,OAErB6H,OAAQhH,IAAUb,OAElB8H,OAAQjH,IAAUb,OAElByN,iBAAkB5M,IAAUH,MAAM,CAChCvM,EAAG0M,IAAU5V,OAAO4U,WACpBrS,KAAMqT,IAAUd,OAAOF,WACvBpS,IAAKoT,IAAUd,OAAOF,e,EA9EP0M,E,eAkFG,CACpB3I,UAAW,GACXkE,OAAQ,GACRD,OAAQ,GACRrb,KAAM,EACNF,KAAM,EACNG,KAAM2f,IACN7f,KAAM6f,IACNQ,eAAgB,ICvHL,OAIbhJ,UAAW/C,IAAUb,OACrBqB,MAAOR,IAAU5V,OAKjByC,MAAOmT,IAAUd,OAGjBoP,SAAUtO,IAAUf,KAEpB7R,KAAM4S,IAAUd,OAGhBqP,gBAAiBvO,IAAUb,OAE3BqP,gBAAiBxO,IAAUb,OAG3BtN,gBAAiB,SAASR,GAEtBA,EAAMQ,gBAANR,GAWJlE,YAAa6S,IAAUL,MAAM,CAAC,WAAY,eAI1ChV,OAAQ,SAAS0G,GACf,IAAI1G,EAAS0G,EAAM1G,YAEJmF,IAAXnF,GACJ1C,EAAQ,GAAWsJ,eAAe5G,EAAQ,WAQ5CqgB,OAAQhL,IAAUX,QAAQW,IAAUd,QAEpC+L,iBAAkBjL,IAAUX,QAAQW,IAAUd,QAE9CkM,UAAWpL,IAAUd,OAMrBuM,QAASzL,IAAUd,OAKnBlT,YAAagU,IAAUf,KACvBhT,YAAa+T,IAAUf,KAEvB/P,iBAAkB8Q,IAAUf,KAE5BwN,iBAAkBzM,IAAUf,KAE5B8M,eAAgB/L,IAAUd,OAE1BuP,YAAazO,IAAUf,KAOvByP,eAAgB1O,IAAU7L,KAI1BuW,YAAa1K,IAAU7L,KAEvBuT,OAAQ1H,IAAU7L,KAElBwW,WAAY3K,IAAU7L,KAEtBuZ,cAAe1N,IAAU7L,KAEzBwZ,SAAU3N,IAAU7L,KAEpBsZ,aAAczN,IAAU7L,KAExBwa,OAAQ3O,IAAU7L,KAMlBya,aAAc5O,IAAUH,MAAM,CAC5BnX,EAAGsX,IAAUb,OAAOH,WACpBzT,EAAGyU,IAAUd,OAAOF,WACpB/T,EAAG+U,IAAUd,OAAOF,aAItBhO,SAAU,SAASK,EAAcgd,GAC/B,IAAIrd,EAAWK,EAAMgd,GAGjBzZ,EAAO,GACXtI,IAAMC,SAAS0E,QAAQD,GAAU,SAASE,GACxC,GAAI0D,EAAK1D,EAAMjH,KACb,MAAM,IAAI0H,MACR,wBACET,EAAMjH,IACN,yDAGN2K,EAAK1D,EAAMjH,MAAO,O,uxDClHxB,IACI4kB,GAAY,EAEhB,IACEA,EAAY,WAAWlT,KAAKmT,UAAUC,WACtC,MAAOzb,I,IAQY0b,E,YA6DnB,WAAY3d,EAAc4d,GAAoB,a,4FAAA,SAC5C,E,qEAAA,qBAAM5d,EAAO4d,IAD+B,eAnB/B,CACbC,WAAY,KACZvkB,OAAQmG,wCACN,EAAKO,MAAM1G,OACX,EAAK0G,MAAML,SACX,EAAKK,MAAMjE,KAEXD,sBAAY,EAAKkE,QAEnB8d,SAAS,EACTC,YAAa,KACbC,UAAW,KACXC,cAAe,KACfC,gBAAiB,KACjBve,SAAU,KAKkC,0BAF3B,GAE2B,qBA+ajC,SAACsC,GAIZ,GACEub,IAC6D,IAA7Dvb,EAAEkc,YAAY1I,OAAO/D,UAAUnV,QA/fb,qBAigBlB,OAAO,EARwB,MAmB7B,EAAKyD,MAPPud,EAZ+B,EAY/BA,aACA5D,EAb+B,EAa/BA,OACA5d,EAd+B,EAc/BA,KACAge,EAf+B,EAe/BA,UACAK,EAhB+B,EAgB/BA,QACA5e,EAjB+B,EAiB/BA,MACAoe,EAlB+B,EAkB/BA,iBAEMtgB,EAAW,EAAK+Z,MAAhB/Z,OApByB,EAsBN2I,EAAEkc,YAArBC,EAtByB,EAsBzBA,OAAQC,EAtBiB,EAsBjBA,OACV9C,EAAmB,CAAEjgB,KAAM8iB,EAAQ7iB,IAAK8iB,EAAQpc,KAEtD,GAAK,EAAKoR,MAAM6K,iBAgCT,GAAI,EAAK7K,MAAMkI,iBAAkB,OAChB,EAAKlI,MAAMkI,iBAAzBjgB,EAD8B,EAC9BA,KAAMC,EADwB,EACxBA,KACeD,GAAQ8iB,GAAU7iB,GAAO8iB,IAEpD,EAAKxI,SAAS,CAAE0F,0BApCa,CAC/B,IASM+C,EAAqBnE,EATY,CACrCpe,OACA4d,SACAS,UACAL,YACAF,eAAgBre,EAChBoe,iBAAkBA,GAAoBD,GAKtC0E,EACAD,EACAb,EAAarjB,EACbqjB,EAAa3jB,GAGf,EAAKic,SAAS,CACZqI,gBAAiB,yBAAKtlB,IAAK2kB,EAAalmB,IACxCkkB,mBACAjiB,OAAQ,GAAF,SACDA,GADC,MAGCikB,EAHD,CAIFpjB,EAAGmkB,EAAmBnkB,EACtBR,EAAG2kB,EAAmB3kB,EACtBe,QAAQ,EACRC,aAAa,QAYrBsH,EAAEsc,kBACFtc,EAAEiU,oBAjf0C,oCAoflB,WAAM,MACD,EAAKlW,MAA5Bud,EADwB,EACxBA,aAAcxhB,EADU,EACVA,KACdzC,EAAW,EAAK+Z,MAAhB/Z,OAEFQ,EAAY+B,kBAChBvC,EAAOoE,QAAO,SAAApG,GAAC,OAAIA,EAAED,IAAMkmB,EAAalmB,KACxCyE,sBAAY,EAAKkE,OACjBjE,GAGF,EAAK8Z,SAAS,CACZvc,OAAQQ,EACRokB,gBAAiB,KACjBL,WAAY,KACZtC,sBAAkB9c,OAlgBwB,sBAsgBhC,WACZ,EAAK+f,mBAOyB,IAA1B,EAAKA,kBACP,EAAKC,+BA/gBqC,sBAmhBhC,WACZ,EAAKD,sBAphBuC,iBAuhBrC,SAACvc,GAAa,IACbsb,EAAiB,EAAKvd,MAAtBud,aADa,EAEF,EAAKlK,MAAhB/Z,OACsBolB,MAAK,SAAApnB,GAAC,OAAIA,EAAED,IAAMkmB,EAAalmB,MAAM,GAA3D8C,EAHa,EAGbA,EAAGR,EAHU,EAGVA,EAAGO,EAHO,EAGPA,EAAGN,EAHI,EAGJA,EAGjB,EAAK4kB,iBAAmB,EAExB,EAAKC,4BAEL,EAAKze,MAAMsd,OAAO,CAAEnjB,IAAGR,IAAGO,IAAGN,IAAGqI,SA/hBhCxB,2BAAiB,KAAM,CACrB,cACA,SACA,aACA,gBACA,WACA,iBAR0C,E,+SAmBdwa,EAAkB0D,GAChD,IAAIC,EAEJ,OAAID,EAAUd,WACL,MAMN7iB,IAAQigB,EAAU3hB,OAAQqlB,EAAUE,cACrC5D,EAAUnf,cAAgB6iB,EAAU7iB,YAG1BjB,wBAAcogB,EAAUtb,SAAUgf,EAAUhf,YAItDif,EAAgBD,EAAUrlB,QAL1BslB,EAAgB3D,EAAU3hB,OASxBslB,EAQK,CACLtlB,OARgBmG,wCAChBmf,EACA3D,EAAUtb,SACVsb,EAAUlf,KACVD,sBAAYmf,IAOZnf,YAAamf,EAAUnf,YACvB6D,SAAUsb,EAAUtb,SACpBkf,YAAa5D,EAAU3hB,QAIpB,U,6CA9CPoM,KAAKmQ,SAAS,CAAEiI,SAAS,IAGzBpY,KAAKoZ,qBAAqBpZ,KAAK2N,MAAM/Z,OAAQoM,KAAK1F,MAAM1G,U,4CA8CpC2hB,EAAkBC,GACtC,OAIExV,KAAK1F,MAAML,WAAasb,EAAUtb,WACjCvE,4BAAkBsK,KAAK1F,MAAOib,EAAWjgB,OACzCA,IAAQ0K,KAAK2N,MAAMwK,WAAY3C,EAAU2C,c,yCAI3BxC,EAAkBsD,GACnC,IAAKjZ,KAAK2N,MAAMwK,WAAY,CAC1B,IAAM/jB,EAAY4L,KAAK2N,MAAM/Z,OACvB0kB,EAAYW,EAAUrlB,OAE5BoM,KAAKoZ,qBAAqBhlB,EAAWkkB,M,wCASvC,GAAKtY,KAAK1F,MAAMid,SAAhB,CACA,IAAM8B,EAAQ1lB,iBAAOqM,KAAK2N,MAAM/Z,QAC1B0lB,EAAoBtZ,KAAK1F,MAAM4Z,iBACjClU,KAAK1F,MAAM4Z,iBAAiB,GAC5BlU,KAAK1F,MAAM2Z,OAAO,GACtB,OACEoF,EAAQrZ,KAAK1F,MAAM+Z,WAClBgF,EAAQ,GAAKrZ,KAAK1F,MAAM2Z,OAAO,GACZ,EAApBqF,EACA,Q,kCAYQ3nB,EAAW8C,EAAWR,E,GAAuC,IAA1BsI,EAA0B,EAA1BA,EAAGmM,EAAuB,EAAvBA,KACxC9U,EAAWoM,KAAK2N,MAAhB/Z,OACJhC,EAAIiG,wBAAcjE,EAAQjC,GAC9B,GAAKC,EAOL,OALAoO,KAAKmQ,SAAS,CACZkI,YAAa/jB,0BAAgB1C,GAC7B0mB,UAAWtY,KAAK2N,MAAM/Z,SAGjBoM,KAAK1F,MAAMqZ,YAAY/f,EAAQhC,EAAGA,EAAG,KAAM2K,EAAGmM,K,6BAWhD/W,EAAW8C,EAAWR,E,GAAuC,IAA1BsI,EAA0B,EAA1BA,EAAGmM,EAAuB,EAAvBA,KACnC2P,EAAgBrY,KAAK2N,MAArB0K,YACFzkB,EAAWoM,KAAK2N,MAAhB/Z,OACEyC,EAAS2J,KAAK1F,MAAdjE,KACJzE,EAAIiG,wBAAcjE,EAAQjC,GAC9B,GAAKC,EAAL,CAGA,IAAI2nB,EAAc,CAChB/kB,EAAG5C,EAAE4C,EACLN,EAAGtC,EAAEsC,EACLO,EAAG7C,EAAE6C,EACLR,EAAGrC,EAAEqC,EACLslB,aAAa,EACb5nB,EAAGA,GAKLiC,EAASqE,sBACPrE,EACAhC,EACA6C,EACAR,GALmB,EAOnB+L,KAAK1F,MAAMnC,iBACX/B,sBAAY4J,KAAK1F,OACjBjE,GAGF2J,KAAK1F,MAAMqW,OAAO/c,EAAQykB,EAAazmB,EAAG2nB,EAAahd,EAAGmM,GAE1D1I,KAAKmQ,SAAS,CACZvc,OAAQuC,kBAAQvC,EAAQwC,sBAAY4J,KAAK1F,OAAQjE,GACjD8hB,WAAYoB,O,iCAYL5nB,EAAW8C,EAAWR,E,GAAuC,IAA1BsI,EAA0B,EAA1BA,EAAGmM,EAAuB,EAAvBA,KAC/C,GAAK1I,KAAK2N,MAAMwK,WAAhB,CADsE,IAG9DE,EAAgBrY,KAAK2N,MAArB0K,YACFzkB,EAAWoM,KAAK2N,MAAhB/Z,OAJgE,EAKnCoM,KAAK1F,MAAhCjE,EAL8D,EAK9DA,KAAM8B,EALwD,EAKxDA,iBACRvG,EAAIiG,wBAAcjE,EAAQjC,GAChC,GAAKC,EAAL,CAIAgC,EAASqE,sBACPrE,EACAhC,EACA6C,EACAR,GALmB,EAOnBkE,EACA/B,sBAAY4J,KAAK1F,OACjBjE,GAGF2J,KAAK1F,MAAMsZ,WAAWhgB,EAAQykB,EAAazmB,EAAG,KAAM2K,EAAGmM,GAGvD,IAAMtU,EAAY+B,kBAAQvC,EAAQwC,sBAAY4J,KAAK1F,OAAQjE,GACnDiiB,EAActY,KAAK2N,MAAnB2K,UACRtY,KAAKmQ,SAAS,CACZgI,WAAY,KACZvkB,OAAQQ,EACRikB,YAAa,KACbC,UAAW,OAGbtY,KAAKoZ,qBAAqBhlB,EAAWkkB,O,2CAGlBlkB,EAAmBkkB,GACjCA,IAAWA,EAAYtY,KAAK2N,MAAM/Z,QAElC0B,IAAQgjB,EAAWlkB,IACtB4L,KAAK1F,MAAMqd,eAAevjB,K,oCAIhBzC,EAAW6C,EAAWN,E,GAAyC,IAA5BqI,EAA4B,EAA5BA,EAAGmM,EAAyB,EAAzBA,KAC1C9U,EAAWoM,KAAK2N,MAAhB/Z,OACJhC,EAAIiG,wBAAcjE,EAAQjC,GACzBC,IAELoO,KAAKmQ,SAAS,CACZoI,cAAejkB,0BAAgB1C,GAC/B0mB,UAAWtY,KAAK2N,MAAM/Z,SAGxBoM,KAAK1F,MAAMqc,cAAc/iB,EAAQhC,EAAGA,EAAG,KAAM2K,EAAGmM,M,+BAGzC/W,EAAW6C,EAAWN,E,GAAyC,IAA5BqI,EAA4B,EAA5BA,EAAGmM,EAAyB,EAAzBA,KAAyB,EACpC1I,KAAK2N,MAA/B/Z,EAD8D,EAC9DA,OAAQ2kB,EADsD,EACtDA,cADsD,EAEnCvY,KAAK1F,MAAhCjE,EAF8D,EAE9DA,KAAM8B,EAFwD,EAExDA,iBACRvG,EAAiBiG,wBAAcjE,EAAQjC,GAC7C,GAAKC,EAAL,CAIA,IAAI4nB,EACJ,GAAIrhB,EAAkB,CACpB,IAAMM,EAAaV,2BAAiBnE,EAAD,KAAchC,EAAd,CAAiB4C,IAAGN,OAAK8D,QAC1D,SAAAzD,GAAU,OAAIA,EAAW5C,IAAMC,EAAED,KAKnC,GAHA6nB,EAAgB/gB,EAAWzE,OAAS,EAGjB,CAEjB,IAAIylB,EAASjF,IACXkF,EAASlF,IACX/b,EAAWyB,SAAQ,SAAA3F,GACbA,EAAWE,EAAI7C,EAAE6C,IAAGglB,EAASliB,KAAKC,IAAIiiB,EAAQllB,EAAWE,IACzDF,EAAWN,EAAIrC,EAAEqC,IAAGylB,EAASniB,KAAKC,IAAIkiB,EAAQnlB,EAAWN,OAG3D0lB,OAAOC,SAASH,KAAS7nB,EAAE4C,EAAIilB,EAAS7nB,EAAE6C,GAC1CklB,OAAOC,SAASF,KAAS9nB,EAAEsC,EAAIwlB,EAAS9nB,EAAEqC,IAI7CulB,IAEH5nB,EAAE4C,EAAIA,EACN5C,EAAEsC,EAAIA,GAIR,IAAIqlB,EAAc,CAChB/kB,EAAG5C,EAAE4C,EACLN,EAAGtC,EAAEsC,EACLO,EAAG7C,EAAE6C,EACLR,EAAGrC,EAAEqC,EACLe,QAAQ,EACRrD,EAAGA,GAGLqO,KAAK1F,MAAMsc,SAAShjB,EAAQ2kB,EAAe3mB,EAAG2nB,EAAahd,EAAGmM,GAG9D1I,KAAKmQ,SAAS,CACZvc,OAAQuC,kBAAQvC,EAAQwC,sBAAY4J,KAAK1F,OAAQjE,GACjD8hB,WAAYoB,O,mCAIH5nB,EAAW6C,EAAWN,E,GAAyC,IAA5BqI,EAA4B,EAA5BA,EAAGmM,EAAyB,EAAzBA,KAAyB,EACxC1I,KAAK2N,MAA/B/Z,EADkE,EAClEA,OAAQ2kB,EAD0D,EAC1DA,cACRliB,EAAS2J,KAAK1F,MAAdjE,KACJzE,EAAIiG,wBAAcjE,EAAQjC,GAE9BqO,KAAK1F,MAAMoc,aAAa9iB,EAAQ2kB,EAAe3mB,EAAG,KAAM2K,EAAGmM,GAG3D,IAAMtU,EAAY+B,kBAAQvC,EAAQwC,sBAAY4J,KAAK1F,OAAQjE,GACnDiiB,EAActY,KAAK2N,MAAnB2K,UACRtY,KAAKmQ,SAAS,CACZgI,WAAY,KACZvkB,OAAQQ,EACRmkB,cAAe,KACfD,UAAW,OAGbtY,KAAKoZ,qBAAqBhlB,EAAWkkB,K,oCAOL,IACxBH,EAAenY,KAAK2N,MAApBwK,WACR,IAAKA,EAAY,OAAO,KAFQ,MAY5BnY,KAAK1F,MARPxE,EAJ8B,EAI9BA,MACAO,EAL8B,EAK9BA,KACA4d,EAN8B,EAM9BA,OACAC,EAP8B,EAO9BA,iBACAG,EAR8B,EAQ9BA,UACAK,EAT8B,EAS9BA,QACAgB,EAV8B,EAU9BA,iBACAV,EAX8B,EAW9BA,eAIF,OACE,kBAAC,EAAD,CACExgB,EAAG2jB,EAAW3jB,EACdN,EAAGikB,EAAWjkB,EACdO,EAAG0jB,EAAW1jB,EACdR,EAAGkkB,EAAWlkB,EACdtC,EAAGwmB,EAAWxmB,EACdqa,UAAU,yBACVmI,eAAgBre,EAChBO,KAAMA,EACN4d,OAAQA,EACRC,iBAAkBA,GAAoBD,EACtCS,QAASA,EACTL,UAAWA,EACXpf,aAAa,EACbC,aAAa,EACbwgB,iBAAkBA,EAClBV,eAAgBA,GAEhB,iC,sCAWJ7a,EACA0f,GAEA,GAAK1f,GAAUA,EAAMjH,IAArB,CACA,IAAMtB,EAAIiG,wBAAcmI,KAAK2N,MAAM/Z,OAAQyE,OAAO8B,EAAMjH,MACxD,IAAKtB,EAAG,OAAO,KAHK,MAiBhBoO,KAAK1F,MAZPxE,EALkB,EAKlBA,MACAO,EANkB,EAMlBA,KACA4d,EAPkB,EAOlBA,OACAC,EARkB,EAQlBA,iBACAG,EATkB,EASlBA,UACAK,EAVkB,EAUlBA,QACAzf,EAXkB,EAWlBA,YACAC,EAZkB,EAYlBA,YACAwgB,EAbkB,EAalBA,iBACAV,EAdkB,EAclBA,eACAwC,EAfkB,EAelBA,gBACAC,EAhBkB,EAgBlBA,gBAhBkB,EAkBkBzX,KAAK2N,MAAnCyK,EAlBY,EAkBZA,QAASvC,EAlBG,EAkBHA,iBAKXiE,EACqB,kBAAlBloB,EAAEqD,YACLrD,EAAEqD,aACDrD,EAAEoD,QAAUC,EACb8kB,EACqB,kBAAlBnoB,EAAEsD,YACLtD,EAAEsD,aACDtD,EAAEoD,QAAUE,EAEnB,OACE,kBAAC,EAAD,CACEif,eAAgBre,EAChBO,KAAMA,EACN4d,OAAQA,EACRC,iBAAkBA,GAAoBD,EACtCS,QAASA,EACTL,UAAWA,EACXnE,OAAQsH,EACRvH,OAAQwH,EACR7D,WAAY5T,KAAK4T,WACjBD,YAAa3T,KAAK2T,YAClBhD,OAAQ3Q,KAAK2Q,OACbgG,cAAe3W,KAAK2W,cACpBC,SAAU5W,KAAK4W,SACfF,aAAc1W,KAAK0W,aACnBzhB,YAAa6kB,EACb5kB,YAAa6kB,EACbrE,iBAAkBA,GAAoB0C,EACtCjC,gBAAiBiC,EACjBpD,eAAgBA,EAChBxgB,EAAG5C,EAAE4C,EACLN,EAAGtC,EAAEsC,EACLO,EAAG7C,EAAE6C,EACLR,EAAGrC,EAAEqC,EACLtC,EAAGC,EAAED,EACLiD,KAAMhD,EAAEgD,KACRF,KAAM9C,EAAE8C,KACRG,KAAMjD,EAAEiD,KACRF,KAAM/C,EAAE+C,KACRK,OAAQpD,EAAEoD,OACV6gB,iBAAkBgE,EAAiBhE,OAAmB9c,GAErDoB,M,+BA4HE,aACmC6F,KAAK1F,MAAvC0R,EADD,EACCA,UAAWvC,EADZ,EACYA,MAAOiO,EADnB,EACmBA,YAEpBsC,EAAkBxS,IAjnBJ,oBAinBgCwE,GAC9CiO,EAAc,GAClBlkB,OAAQiK,KAAKka,mBACVzQ,GAGL,OACE,yBACEuC,UAAWgO,EACXvQ,MAAOwQ,EACPrC,OAAQF,EAAc1X,KAAK4X,OAAS1c,OACpCif,YAAazC,EAAc1X,KAAKma,YAAcjf,OAC9Ckf,YAAa1C,EAAc1X,KAAKoa,YAAclf,OAC9Cmf,WAAY3C,EAAc1X,KAAKqa,WAAanf,QAE3C3F,IAAMC,SAASC,IAAIuK,KAAK1F,MAAML,UAAU,SAAAE,GAAK,OAC5C,EAAKmgB,gBAAgBngB,MAEtBud,GACC1X,KAAK2N,MAAM6K,iBACXxY,KAAKsa,gBAAgBta,KAAK2N,MAAM6K,iBAAiB,GAClDxY,KAAKuZ,oB,8BAznB+BhkB,IAAM0b,W,EAA9BgH,E,cAEE,mB,EAFFA,E,YAKAsC,G,EALAtC,E,eAOG,CACpBV,UAAU,EACVlhB,KAAM,GACN2V,UAAW,GACXvC,MAAO,GACPgO,gBAAiB,GACjBD,gBAAiB,GACjBtD,iBAAkB,KAClBG,UAAW,IACXK,QAASF,IACT5gB,OAAQ,GACRqgB,OAAQ,CAAC,GAAI,IACbhf,aAAa,EACbC,aAAa,EACbwiB,aAAa,EACbhC,kBAAkB,EAClBV,eAAgB,EAChBla,iBAAiB,EACjB1E,YAAa,WACb+B,kBAAkB,EAClB0f,aAAc,CACZlmB,EAAG,oBACHuC,EAAG,EACHM,EAAG,GAELmjB,eAAgBzc,OAChByY,YAAazY,OACbyV,OAAQzV,OACR0Y,WAAY1Y,OACZyb,cAAezb,OACf0b,SAAU1b,OACVwb,aAAcxb,OACd0c,OAAQ1c,U,6BC/GZlK,EAAQ+B,YAAa,EACrB/B,EAAQ8W,aAAU,EAElB,IAAI0S,EAASC,EAAuB,EAAQ,IAExCC,EAAaD,EAAuB,EAAQ,IAE5CE,EAAkB,EAAQ,GAE1BC,EAAS,EAAQ,IAErB,SAASH,EAAuBI,GAAO,OAAOA,GAAOA,EAAI9nB,WAAa8nB,EAAM,CAAE/S,QAAS+S,GAEvF,SAASC,IAA2Q,OAA9PA,EAAWzoB,OAAOof,QAAU,SAAU1B,GAAU,IAAK,IAAIpe,EAAI,EAAGA,EAAI4U,UAAUvS,OAAQrC,IAAK,CAAE,IAAIopB,EAASxU,UAAU5U,GAAI,IAAK,IAAIuB,KAAO6nB,EAAc1oB,OAAOkB,UAAUC,eAAe1B,KAAKipB,EAAQ7nB,KAAQ6c,EAAO7c,GAAO6nB,EAAO7nB,IAAY,OAAO6c,IAA2BnI,MAAM5H,KAAMuG,WAEhT,SAASyU,EAAQ3nB,EAAQ4nB,GAAkB,IAAIpd,EAAOxL,OAAOwL,KAAKxK,GAAS,GAAIhB,OAAOoM,sBAAuB,CAAE,IAAIyc,EAAU7oB,OAAOoM,sBAAsBpL,GAAa4nB,IAAgBC,EAAUA,EAAQljB,QAAO,SAAUmjB,GAAO,OAAO9oB,OAAOsX,yBAAyBtW,EAAQ8nB,GAAK5oB,eAAgBsL,EAAKjH,KAAKgR,MAAM/J,EAAMqd,GAAY,OAAOrd,EAM9U,SAASud,EAAuBvf,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIkT,eAAe,6DAAgE,OAAOlT,EAI/J,SAASwf,EAAgBR,EAAK3nB,EAAKN,GAAiK,OAApJM,KAAO2nB,EAAOxoB,OAAOC,eAAeuoB,EAAK3nB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMqX,cAAc,EAAMC,UAAU,IAAkBgR,EAAI3nB,GAAON,EAAgBioB,EAE3M,IAAIS,EAEJ,SAAUC,GANV,IAAwBC,EAAUC,EAShC,SAASH,IAGP,IAFA,IAAII,EAEKC,EAAOpV,UAAUvS,OAAQ4nB,EAAO,IAAIvnB,MAAMsnB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQtV,UAAUsV,GAUzB,OALAR,EAAgBD,EAFhBM,EAAQH,EAAiBzpB,KAAK8V,MAAM2T,EAAkB,CAACvb,MAAMnG,OAAO+hB,KAAU5b,MAE/B,QAAS,CACtD8b,OAAQ,EACRC,OAAQ,IAGHL,EAvBuBD,EAONF,GAPJC,EAOPF,GAPwC/nB,UAAYlB,OAAOY,OAAOwoB,EAAWloB,WAAYioB,EAASjoB,UAAU6Q,YAAcoX,EAAUA,EAAS3M,UAAY4M,EA0BxK,IAAIO,EAASV,EAAU/nB,UAiMvB,OA/LAyoB,EAAOC,gBAAkB,SAAyBnmB,EAAOC,EAAQmmB,GAG/D,MAAO,CADPpmB,GADAC,EAASD,EAAQomB,GACAA,EACFnmB,IAIjBimB,EAAOG,eAAiB,SAAwBrmB,EAAOC,GACrD,IAAIqmB,EAAO,CAACpc,KAAK1F,MAAMic,eAAgBvW,KAAK1F,MAAMkc,gBAC9Chf,EAAM4kB,EAAK,GACXtoB,EAAMsoB,EAAK,GACf,IAAK5kB,IAAQ1D,EAAK,MAAO,CAACgC,EAAOC,GAEjC,GAAIiK,KAAK1F,MAAM2hB,gBACb,GAAIlmB,IAAWiK,KAAK1F,MAAMvE,OAAQ,CAChC,IAAIsmB,EAAQrc,KAAK1F,MAAMxE,MAAQkK,KAAK1F,MAAMvE,OAE1CD,GADAC,EAASD,EAAQumB,GACAA,MACZ,CAGL,IAAIC,EAAStc,KAAK1F,MAAMvE,OAASiK,KAAK1F,MAAMxE,MAG5CC,GADAD,EAAQC,EAASumB,GACAA,EAIrB,IAAIC,EAAOzmB,EACP0mB,EAAOzmB,EAIP0mB,EAAczc,KAAK2N,MACnBmO,EAASW,EAAYX,OACrBC,EAASU,EAAYV,OAyBzB,OAxBAjmB,GAASgmB,EACT/lB,GAAUgmB,EAENvkB,IACF1B,EAAQyB,KAAKzD,IAAI0D,EAAI,GAAI1B,GACzBC,EAASwB,KAAKzD,IAAI0D,EAAI,GAAIzB,IAGxBjC,IACFgC,EAAQyB,KAAKC,IAAI1D,EAAI,GAAIgC,GACzBC,EAASwB,KAAKC,IAAI1D,EAAI,GAAIiC,IAK5BgmB,GAAUS,EAAOzmB,GADjB+lB,GAAUS,EAAOzmB,KAGFkK,KAAK2N,MAAMmO,QAAUC,IAAW/b,KAAK2N,MAAMoO,QACxD/b,KAAKmQ,SAAS,CACZ2L,OAAQA,EACRC,OAAQA,IAIL,CAACjmB,EAAOC,IAUjBimB,EAAOU,cAAgB,SAAuB7F,EAAa3f,GACzD,IAAIylB,EAAS3c,KAEb,OAAO,SAAUzD,EAAGqgB,GAClB,IAAIlU,EAAOkU,EAAMlU,KACbmF,EAAS+O,EAAM/O,OACfC,EAAS8O,EAAM9O,OACnBD,GAAU8O,EAAOriB,MAAM0a,eACvBlH,GAAU6O,EAAOriB,MAAM0a,eAEvB,IAAI6H,GAAkC,SAAtBF,EAAOriB,MAAMpD,MAAyC,MAAtBylB,EAAOriB,MAAMpD,QAA+C,IAA9B,CAAC,IAAK,KAAKL,QAAQK,GAC7F4lB,GAAkC,SAAtBH,EAAOriB,MAAMpD,MAAyC,MAAtBylB,EAAOriB,MAAMpD,QAA+C,IAA9B,CAAC,IAAK,KAAKL,QAAQK,GAE7F2lB,GAAsC,MAA1B3lB,EAAKA,EAAKlD,OAAS,KACjC6Z,GAAUA,GAGRiP,GAAwB,MAAZ5lB,EAAK,KACnB4W,GAAUA,GAIZ,IAAIhY,EAAQ6mB,EAAOriB,MAAMxE,OAAS+mB,EAAWhP,EAAS,GAClD9X,EAAS4mB,EAAOriB,MAAMvE,QAAU+mB,EAAWhP,EAAS,GAEpDiP,EAAejnB,IAAU6mB,EAAOriB,MAAMxE,MACtCknB,EAAgBjnB,IAAW4mB,EAAOriB,MAAMvE,OAC5C,GAAoB,aAAhB8gB,GAA+BkG,GAAiBC,EAApD,CAEA,IAAIC,EAAwBN,EAAOR,eAAermB,EAAOC,GAEzDD,EAAQmnB,EAAsB,GAC9BlnB,EAASknB,EAAsB,GAE/B,IAAIC,EAAW,GAEf,GAAoB,kBAAhBrG,QACG,GAAoB,iBAAhBA,EACTqG,EAASpB,OAASoB,EAASnB,OAAS,OAGpC,GAAIjmB,IAAU6mB,EAAOriB,MAAMxE,OAASC,IAAW4mB,EAAOriB,MAAMvE,OAAQ,OAGrB,mBAA9B4mB,EAAOriB,MAAMuc,IAIL,mBAAdta,EAAE4gB,SAAwB5gB,EAAE4gB,UAEvCR,EAAOxM,SAAS+M,GAAU,WACxB,OAAOP,EAAOriB,MAAMuc,GAAata,EAAG,CAClCmM,KAAMA,EACN1L,KAAM,CACJlH,MAAOA,EACPC,OAAQA,GAEVka,OAAQ/Y,QAIZylB,EAAOxM,SAAS+M,MAKtBlB,EAAOoB,mBAAqB,SAA4BC,GACtD,IAAIpN,EAASjQ,KAAK1F,MAAM2V,OAExB,OAAIA,EACoB,mBAAXA,EACFA,EAAOoN,GAGTpN,EAGFuK,EAAO1S,QAAQ4D,cAAc,OAAQ,CAC1CM,UAAW,iDAAmDqR,KAIlErB,EAAOsB,OAAS,WACd,IAAIC,EAASvd,KAGTwd,EAAcxd,KAAK1F,MACnBL,EAAWujB,EAAYvjB,SACvBwc,EAAgB+G,EAAY/G,cAW5BgH,GAVQD,EAAY1nB,MACX0nB,EAAYznB,OACRynB,EAAYE,WACPF,EAAYvB,gBACvBuB,EAAYtmB,KACFsmB,EAAYjH,eACZiH,EAAYhH,eAClBgH,EAAY5G,SACR4G,EAAY9G,aACX8G,EAAY7G,cACZ6G,EAAYC,eAE5BhqB,GADiB+pB,EAAYxI,eA1MrC,SAAuC+F,EAAQ4C,GAAY,GAAc,MAAV5C,EAAgB,MAAO,GAAI,IAA2D7nB,EAAKvB,EAA5Doe,EAAS,GAAQ6N,EAAavrB,OAAOwL,KAAKkd,GAAqB,IAAKppB,EAAI,EAAGA,EAAIisB,EAAW5pB,OAAQrC,IAAOuB,EAAM0qB,EAAWjsB,GAAQgsB,EAAS9mB,QAAQ3D,IAAQ,IAAa6c,EAAO7c,GAAO6nB,EAAO7nB,IAAQ,OAAO6c,EA2M9R8N,CAA8BL,EAAa,CAAC,WAAY,gBAAiB,QAAS,SAAU,aAAc,kBAAmB,OAAQ,iBAAkB,iBAAkB,WAAY,eAAgB,gBAAiB,gBAAiB,oBAE3OxR,EAAYvY,EAAEuY,UAAYvY,EAAEuY,UAAY,mBAAqB,kBAKjE,OAAO,EAAI4O,EAAO1J,cAAcjX,EApNpC,SAAuB8V,GAAU,IAAK,IAAIpe,EAAI,EAAGA,EAAI4U,UAAUvS,OAAQrC,IAAK,CAAE,IAAIopB,EAAyB,MAAhBxU,UAAU5U,GAAa4U,UAAU5U,GAAK,GAAQA,EAAI,EAAKqpB,EAAQD,GAAQ,GAAM7gB,SAAQ,SAAUhH,GAAOmoB,EAAgBtL,EAAQ7c,EAAK6nB,EAAO7nB,OAAsBb,OAAOoa,0BAA6Bpa,OAAOqa,iBAAiBqD,EAAQ1d,OAAOoa,0BAA0BsO,IAAmBC,EAAQD,GAAQ7gB,SAAQ,SAAUhH,GAAOb,OAAOC,eAAeyd,EAAQ7c,EAAKb,OAAOsX,yBAAyBoR,EAAQ7nB,OAAe,OAAO6c,EAoN/c+N,CAAc,GAAIrqB,EAAG,CAC7DuY,UAAWA,EACX/R,SAAU,CAACA,EAASK,MAAML,SAAUwjB,EAAchoB,KAAI,SAAUvB,GAC9D,OAAOsmB,EAAO1S,QAAQ4D,cAAciP,EAAgB5S,cAAe+S,EAAS,GAAIrE,EAAe,CAC7FvjB,IAAK,mBAAqBgB,EAC1B6c,OAAQwM,EAAOb,cAAc,eAAgBxoB,GAC7Ckc,QAASmN,EAAOb,cAAc,gBAAiBxoB,GAC/Cyc,OAAQ4M,EAAOb,cAAc,WAAYxoB,KACvCqpB,EAAOH,mBAAmBlpB,YAK7BonB,EArNT,CAsNEd,EAAO1S,QAAQmJ,WAEjBjgB,EAAQ8W,QAAUwT,EAElBD,EAAgBC,EAAW,YAAa,CAKtCrhB,SAAUygB,EAAW5S,QAAQS,QAAQN,WAErCnS,MAAO4kB,EAAW5S,QAAQK,OAAOF,WACjClS,OAAQ2kB,EAAW5S,QAAQK,OAAOF,WAKlCgI,OAAQyK,EAAW5S,QAAQS,QAE3BmV,WAAYhD,EAAW5S,QAAQnL,MAW/B8gB,cAAe/C,EAAW5S,QAAQQ,QAAQoS,EAAW5S,QAAQc,MAAM,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,QAC1GoM,eAAgB0F,EAAW5S,QAAQK,OAEnC8T,gBAAiBvB,EAAW5S,QAAQI,KAMpChR,KAAMwjB,EAAW5S,QAAQc,MAAM,CAAC,OAAQ,IAAK,IAAK,SAElD2N,eAAgBmE,EAAW5S,QAAQQ,QAAQoS,EAAW5S,QAAQK,QAC9DqO,eAAgBkE,EAAW5S,QAAQQ,QAAQoS,EAAW5S,QAAQK,QAE9DuO,aAAcgE,EAAW5S,QAAQ1K,KACjCuZ,cAAe+D,EAAW5S,QAAQ1K,KAClCwZ,SAAU8D,EAAW5S,QAAQ1K,KAE7BqZ,cAAeiE,EAAW5S,QAAQzU,SAGpCgoB,EAAgBC,EAAW,eAAgB,CACzCoC,WAAY,CAAC,GAAI,IACjBzB,iBAAiB,EACjB/kB,KAAM,OACNqf,eAAgB,CAAC,GAAI,IACrBC,eAAgB,CAAChC,IAAUA,KAC3BiJ,cAAe,CAAC,MAChBzI,eAAgB,K,6BC9SlB/jB,EAAOD,QAAU,WACf,MAAM,IAAI4J,MAAM,mFAGlB3J,EAAOD,QAAQsqB,UAAY,EAAQ,GAAqBxT,QACxD7W,EAAOD,QAAQ+sB,aAAe,EAAQ,IAAwBjW,S,gBCN9D7W,EAAOD,QAAUE,EAAQ,GAAyB4W,QAClD7W,EAAOD,QAAQgtB,MAAQ9sB,EAAQ,GAC/BD,EAAOD,QAAQitB,WAAa/sB,EAAQ,IAAmC4W,QACvE7W,EAAOD,QAAQitB,WAAWD,MAAQ9sB,EAAQ,GAC1CD,EAAOD,QAAQktB,cAAgBhtB,EAAQ,IAAkC4W,S,cCJzE,IAAIzN,EAGJA,EAAI,WACH,OAAO2F,KADJ,GAIJ,IAEC3F,EAAIA,GAAK,IAAIyB,SAAS,cAAb,GACR,MAAOS,GAEc,iBAAXlL,SAAqBgJ,EAAIhJ,QAOrCJ,EAAOD,QAAUqJ,G,cCnBjBpJ,EAAOD,QAAU,SAASC,GAoBzB,OAnBKA,EAAOktB,kBACXltB,EAAOmtB,UAAY,aACnBntB,EAAOotB,MAAQ,GAEVptB,EAAOgJ,WAAUhJ,EAAOgJ,SAAW,IACxC5H,OAAOC,eAAerB,EAAQ,SAAU,CACvCsB,YAAY,EACZC,IAAK,WACJ,OAAOvB,EAAOW,KAGhBS,OAAOC,eAAerB,EAAQ,KAAM,CACnCsB,YAAY,EACZC,IAAK,WACJ,OAAOvB,EAAOU,KAGhBV,EAAOktB,gBAAkB,GAEnBltB,I,47BCXR,IAAIqtB,EAAuB,EAAQ,IAEnC,SAASC,KACT,SAASC,KACTA,EAAuBxW,kBAAoBuW,EAE3CttB,EAAOD,QAAU,WACf,SAASytB,EAAKnkB,EAAOgd,EAAUoH,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWP,EAAf,CAIA,IAAIQ,EAAM,IAAIlkB,MACZ,mLAKF,MADAkkB,EAAI5sB,KAAO,sBACL4sB,GAGR,SAASC,IACP,OAAON,EAFTA,EAAKxW,WAAawW,EAMlB,IAAIO,EAAiB,CACnBriB,MAAO8hB,EACPvW,KAAMuW,EACNrhB,KAAMqhB,EACNtW,OAAQsW,EACRprB,OAAQorB,EACRrW,OAAQqW,EACRtY,OAAQsY,EAERpW,IAAKoW,EACLnW,QAASyW,EACTxW,QAASkW,EACTjW,YAAaiW,EACbhW,WAAYsW,EACZrW,KAAM+V,EACN9V,SAAUoW,EACVnW,MAAOmW,EACPlW,UAAWkW,EACXjW,MAAOiW,EACPhW,MAAOgW,EAEP/V,eAAgBwV,EAChBxW,kBAAmBuW,GAKrB,OAFAS,EAAe/V,UAAY+V,EAEpBA,I,6BCnDT/tB,EAAOD,QAFoB,gD,6BCP3BA,EAAQ+B,YAAa,EACrB/B,EAAQkgB,aAaR,SAAsB3I,EAASjO,GACzBA,EAAMmP,OAASlB,EAAQjO,MAAMmP,QAC/BnP,EAAMmP,MAPV,SAAuBsG,GAAU,IAAK,IAAIpe,EAAI,EAAGA,EAAI4U,UAAUvS,OAAQrC,IAAK,CAAE,IAAIopB,EAAyB,MAAhBxU,UAAU5U,GAAa4U,UAAU5U,GAAK,GAAQA,EAAI,EAAKqpB,EAAQD,GAAQ,GAAM7gB,SAAQ,SAAUhH,GAAOmoB,EAAgBtL,EAAQ7c,EAAK6nB,EAAO7nB,OAAsBb,OAAOoa,0BAA6Bpa,OAAOqa,iBAAiBqD,EAAQ1d,OAAOoa,0BAA0BsO,IAAmBC,EAAQD,GAAQ7gB,SAAQ,SAAUhH,GAAOb,OAAOC,eAAeyd,EAAQ7c,EAAKb,OAAOsX,yBAAyBoR,EAAQ7nB,OAAe,OAAO6c,EAO3e+N,CAAc,GAAIvV,EAAQjO,MAAMmP,MAAO,GAAInP,EAAMmP,QAG7DnP,EAAM0R,WAAazD,EAAQjO,MAAM0R,YACnC1R,EAAM0R,UAAYzD,EAAQjO,MAAM0R,UAAY,IAAM1R,EAAM0R,WAG1D,OAAOwO,EAAO1S,QAAQoJ,aAAa3I,EAASjO,IApB9C,IAEgCugB,EAF5BL,GAE4BK,EAFI,EAAQ,KAESA,EAAI9nB,WAAa8nB,EAAM,CAAE/S,QAAS+S,GAEvF,SAASG,EAAQ3nB,EAAQ4nB,GAAkB,IAAIpd,EAAOxL,OAAOwL,KAAKxK,GAAS,GAAIhB,OAAOoM,sBAAuB,CAAE,IAAIyc,EAAU7oB,OAAOoM,sBAAsBpL,GAAa4nB,IAAgBC,EAAUA,EAAQljB,QAAO,SAAUmjB,GAAO,OAAO9oB,OAAOsX,yBAAyBtW,EAAQ8nB,GAAK5oB,eAAgBsL,EAAKjH,KAAKgR,MAAM/J,EAAMqd,GAAY,OAAOrd,EAI9U,SAASwd,EAAgBR,EAAK3nB,EAAKN,GAAiK,OAApJM,KAAO2nB,EAAOxoB,OAAOC,eAAeuoB,EAAK3nB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMqX,cAAc,EAAMC,UAAU,IAAkBgR,EAAI3nB,GAAON,EAAgBioB,I,6BCX3M7pB,EAAQ+B,YAAa,EACrB/B,EAAQ8W,aAAU,EAElB,IAAI0S,EAASC,EAAuB,EAAQ,IAExCC,EAAaD,EAAuB,EAAQ,IAE5CwE,EAAaxE,EAAuB,EAAQ,IAEhD,SAASA,EAAuBI,GAAO,OAAOA,GAAOA,EAAI9nB,WAAa8nB,EAAM,CAAE/S,QAAS+S,GAEvF,SAASC,IAA2Q,OAA9PA,EAAWzoB,OAAOof,QAAU,SAAU1B,GAAU,IAAK,IAAIpe,EAAI,EAAGA,EAAI4U,UAAUvS,OAAQrC,IAAK,CAAE,IAAIopB,EAASxU,UAAU5U,GAAI,IAAK,IAAIuB,KAAO6nB,EAAc1oB,OAAOkB,UAAUC,eAAe1B,KAAKipB,EAAQ7nB,KAAQ6c,EAAO7c,GAAO6nB,EAAO7nB,IAAY,OAAO6c,IAA2BnI,MAAM5H,KAAMuG,WAIhT,SAAS6U,EAAuBvf,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIkT,eAAe,6DAAgE,OAAOlT,EAI/J,SAASwf,EAAgBR,EAAK3nB,EAAKN,GAAiK,OAApJM,KAAO2nB,EAAOxoB,OAAOC,eAAeuoB,EAAK3nB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMqX,cAAc,EAAMC,UAAU,IAAkBgR,EAAI3nB,GAAON,EAAgBioB,EAG3M,IAAIkD,EAEJ,SAAUxC,GAPV,IAAwBC,EAAUC,EAUhC,SAASsC,IAGP,IAFA,IAAIrC,EAEKC,EAAOpV,UAAUvS,OAAQ4nB,EAAO,IAAIvnB,MAAMsnB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQtV,UAAUsV,GA4BzB,OAvBAR,EAAgBD,EAFhBM,EAAQH,EAAiBzpB,KAAK8V,MAAM2T,EAAkB,CAACvb,MAAMnG,OAAO+hB,KAAU5b,MAE/B,QAAS,CACtDlK,MAAO4lB,EAAMphB,MAAMxE,MACnBC,OAAQ2lB,EAAMphB,MAAMvE,OACpBmpB,WAAYxD,EAAMphB,MAAMxE,MACxBqpB,YAAazD,EAAMphB,MAAMvE,SAG3BslB,EAAgBD,EAAuBM,GAAQ,YAAY,SAAUnf,EAAGmE,GACtE,IAAI1D,EAAO0D,EAAK1D,KACJA,EAAKlH,MACJkH,EAAKjH,OAEd2lB,EAAMphB,MAAMsc,UACdra,EAAE4gB,SAAW5gB,EAAE4gB,UAEfzB,EAAMvL,SAASnT,GAAM,WACnB,OAAO0e,EAAMphB,MAAMsc,UAAY8E,EAAMphB,MAAMsc,SAASra,EAAGmE,OAGzDgb,EAAMvL,SAASnT,MAIZ0e,EA6DT,OAvGgCD,EAQHF,GARPC,EAQPuC,GARwCxqB,UAAYlB,OAAOY,OAAOwoB,EAAWloB,WAAYioB,EAASjoB,UAAU6Q,YAAcoX,EAAUA,EAAS3M,UAAY4M,EA6CxKsC,EAAaqB,yBAA2B,SAAkC9kB,EAAOqT,GAE/E,OAAIA,EAAMuR,aAAe5kB,EAAMxE,OAAS6X,EAAMwR,cAAgB7kB,EAAMvE,OAC3D,CACLD,MAAOwE,EAAMxE,MACbC,OAAQuE,EAAMvE,OACdmpB,WAAY5kB,EAAMxE,MAClBqpB,YAAa7kB,EAAMvE,QAIhB,MAGIgoB,EAAaxqB,UAEnB+pB,OAAS,WAId,IAAIE,EAAcxd,KAAK1F,MACnB2V,EAASuN,EAAYvN,OACrByN,EAAaF,EAAYE,WAEzB/G,GADW6G,EAAY5G,SACP4G,EAAY7G,eAC5BD,EAAe8G,EAAY9G,aAC3BD,EAAgB+G,EAAY/G,cAC5BF,EAAiBiH,EAAYjH,eAC7BC,EAAiBgH,EAAYhH,eAC7ByF,EAAkBuB,EAAYvB,gBAC9B/kB,EAAOsmB,EAAYtmB,KAGnBumB,GAFQD,EAAY1nB,MACX0nB,EAAYznB,OACLynB,EAAYC,eAC5BnjB,EAnFR,SAAuCygB,EAAQ4C,GAAY,GAAc,MAAV5C,EAAgB,MAAO,GAAI,IAA2D7nB,EAAKvB,EAA5Doe,EAAS,GAAQ6N,EAAavrB,OAAOwL,KAAKkd,GAAqB,IAAKppB,EAAI,EAAGA,EAAIisB,EAAW5pB,OAAQrC,IAAOuB,EAAM0qB,EAAWjsB,GAAQgsB,EAAS9mB,QAAQ3D,IAAQ,IAAa6c,EAAO7c,GAAO6nB,EAAO7nB,IAAQ,OAAO6c,EAmF1R8N,CAA8BL,EAAa,CAAC,SAAU,aAAc,WAAY,gBAAiB,eAAgB,gBAAiB,iBAAkB,iBAAkB,kBAAmB,OAAQ,QAAS,SAAU,kBAEhO,OAAOhD,EAAO1S,QAAQ4D,cAAcuT,EAAWnX,QAAS,CACtDmI,OAAQA,EACRyN,WAAYA,EACZ5nB,MAAOkK,KAAK2N,MAAM7X,MAClBC,OAAQiK,KAAK2N,MAAM5X,OACnB4gB,cAAeA,EACfC,SAAU5W,KAAK4W,SACfF,aAAcA,EACdD,cAAeA,EACfF,eAAgBA,EAChBC,eAAgBA,EAChByF,gBAAiBA,EACjB/kB,KAAMA,EACNumB,cAAeA,GACdjD,EAAO1S,QAAQ4D,cAAc,MAAOoP,EAAS,CAC9CrR,MAAO,CACL3T,MAAOkK,KAAK2N,MAAM7X,MAAQ,KAC1BC,OAAQiK,KAAK2N,MAAM5X,OAAS,OAE7BuE,MAGEyjB,EAhGT,CAiGEvD,EAAO1S,QAAQmJ,WAEjBjgB,EAAQ8W,QAAUiW,EAElB1C,EAAgB0C,EAAc,YAAa,CACzChoB,OAAQ2kB,EAAW5S,QAAQK,OAC3BrS,MAAO4kB,EAAW5S,QAAQK,SAG5BkT,EAAgB0C,EAAc,eAAgB,CAC5CL,WAAY,CAAC,GAAI,O,8wEClHnB,IAAM9X,EAAO,SAAAiV,GAAG,OAAIxoB,OAAOkB,UAAUmK,SAAS5L,KAAK+oB,IAUnD,SAASwE,EACPC,EACAtY,GAEA,OAAO3S,MAAMsG,QAAQ2kB,GAASA,EAAQA,EAAMtY,G,IAiCzBuY,E,yLAwFX,EAAKC,wB,yBA6DI,SAAC5rB,GAChB,EAAK0G,MAAMqd,eAAe/jB,EAA1B,KACK,EAAK0G,MAAM4M,QADhB,KAEG,EAAKyG,MAAM3G,WAAapT,Q,iTArCG2hB,EAAqB0D,GACnD,IAAK3jB,IAAQigB,EAAUrO,QAAS+R,EAAU/R,SAAU,KAE1CF,EAAqBiS,EAArBjS,WAAY3Q,EAAS4iB,EAAT5iB,KAYpB,MAAO,CAAEzC,OARSqT,yCAChBsO,EAAUrO,QACVqO,EAAU5O,YACVK,EACAA,EACA3Q,EACAkf,EAAUnf,aAEgB8Q,QAASqO,EAAUrO,SAGjD,OAAO,S,gDA3CqB,MACkBlH,KAAK1F,MAA3CxE,EADoB,EACpBA,MAAO6Q,EADa,EACbA,YAAaO,EADA,EACAA,QAAS7Q,EADT,EACSA,KAC/B2Q,EAAaN,iCAAuBC,EAAa7Q,GACjD2pB,EAAQ1Y,gCAAsBC,EAAY3Q,GAE1CD,GAC2B,IAA/B4J,KAAK1F,MAAMQ,gBAA4B,KAAOkF,KAAK1F,MAAMlE,YAY3D,MAAO,CACLxC,OAVoBqT,yCACpBC,EACAP,EACAK,EACAA,EACAyY,EACArpB,GAKA4Q,WAAYA,EACZ3Q,KAAMopB,K,yCAyBS9J,GAGf3V,KAAK1F,MAAMxE,OAAS6f,EAAU7f,OAC9BkK,KAAK1F,MAAM0M,aAAe2O,EAAU3O,YACnC1R,IAAQ0K,KAAK1F,MAAMqM,YAAagP,EAAUhP,cAC1CrR,IAAQ0K,KAAK1F,MAAMjE,KAAMsf,EAAUtf,OAEpC2J,KAAK0f,cAAc/J,K,oCAgBTA,GAAqB,MACmB3V,KAAK1F,MAAjDqM,EADyB,EACzBA,YAAatQ,EADY,EACZA,KAAM6Q,EADM,EACNA,QAAS9Q,EADH,EACGA,YAC9BupB,EACJ3f,KAAK1F,MAAM0M,YACXN,iCAAuB1G,KAAK1F,MAAMqM,YAAa3G,KAAK1F,MAAMxE,OAEtDqR,EAAiBnH,KAAK2N,MAAM3G,WAC5B4Y,EAAkB7Y,gCAAsB4Y,EAAetpB,GACvDwpB,EAAa,EAAH,GAAQ3Y,GAGxB,GACEC,IAAmBwY,GACnBhK,EAAUhP,cAAgBA,GAC1BgP,EAAUtf,OAASA,EACnB,CAEM8Q,KAAkB0Y,IACtBA,EAAW1Y,GAAkBhT,sBAAY6L,KAAK2N,MAAM/Z,SAGtD,IAAIA,EAASqT,yCACX4Y,EACAlZ,EACAgZ,EACAxY,EACAyY,EACAxpB,GAIFxC,EAASmG,wCACPnG,EACAoM,KAAK1F,MAAML,SACX2lB,EACAxpB,GAIFypB,EAAWF,GAAiB/rB,EAG5BoM,KAAK1F,MAAMqd,eAAe/jB,EAAQisB,GAClC7f,KAAK1F,MAAMwlB,mBAAmBH,EAAeC,GAE7C5f,KAAKmQ,SAAS,CACZnJ,WAAY2Y,EACZ/rB,OAAQA,EACRyC,KAAMupB,IAIV,IAAM3L,EAASoL,EAAoBrf,KAAK1F,MAAM2Z,OAAQ0L,GAChDzL,EAAmBmL,EACvBrf,KAAK1F,MAAM4Z,iBACXyL,GAIF3f,KAAK1F,MAAMolB,cACT1f,KAAK1F,MAAMxE,MACXme,EACA2L,EACA1L,K,+BAIK,MAaHlU,KAAK1F,MANP2Z,GAPK,EAGLjN,WAHK,EAILL,YAJK,EAKLtQ,KALK,EAML6Q,QANK,EAOL+M,QACAC,EARK,EAQLA,iBAIGjS,GAZE,EASL6d,mBATK,EAULnI,eAVK,EAWL+H,cAXK,sIAgBP,OACE,gBAAC,UAAD,KACMzd,EADN,CAEEgS,OAAQoL,EAAoBpL,EAAQjU,KAAK2N,MAAM3G,YAC/CkN,iBAAkBmL,EAChBnL,EACAlU,KAAK2N,MAAM3G,YAEb2Q,eAAgB3X,KAAK2X,eACrB/jB,OAAQoM,KAAK2N,MAAM/Z,OACnByC,KAAM2J,KAAK2N,MAAMtX,a,8BA7P8Bd,a,EAAlCgqB,E,YAMA,CAOjBvY,WAAYiC,IAAUb,OAGtBzB,YAAasC,IAAU5V,OAGvBgD,KAAM4S,IAAU5V,OAMhB4gB,OAAQhL,IAAUJ,UAAU,CAACI,IAAUtM,MAAOsM,IAAU5V,SAMxD6gB,iBAAkBjL,IAAUJ,UAAU,CAACI,IAAUtM,MAAOsM,IAAU5V,SAIlE6T,QA7BiB,SA6BT5M,EAAgBgd,GACtB,GAA8B,oBAA1B1R,EAAKtL,EAAMgd,IACb,MAAM,IAAI1c,MACR,gDACEgL,EAAKtL,EAAMgd,KAGjBjlB,OAAOwL,KAAKvD,EAAMgd,IAAWpd,SAAQ,SAAAhH,GACnC,KAAMA,KAAOoH,EAAMqM,aACjB,MAAM,IAAI/L,MACR,6DAGJJ,yBAAeF,EAAM4M,QAAQhU,GAAM,WAAaA,OAMpD4C,MAAOmT,IAAUd,OAAOF,WAOxB6X,mBAAoB7W,IAAU7L,KAI9Bua,eAAgB1O,IAAU7L,KAG1BsiB,cAAezW,IAAU7L,O,EApERmiB,E,eAuEG,CACpB5Y,YAAa,CAAEoZ,GAAI,KAAMC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,IAAK,GACzD9pB,KAAM,CAAE0pB,GAAI,GAAIC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,IAAK,GAC3CjZ,QAAS,GACT+M,OAAQ,CAAC,GAAI,IACbC,iBAAkB,CAChB6L,GAAI,CAAC,EAAG,GACRC,GAAI,CAAC,EAAG,GACRC,GAAI,CAAC,EAAG,GACRC,GAAI,CAAC,EAAG,GACRC,IAAK,CAAC,EAAG,IAEXL,mBAAoB5kB,OACpByc,eAAgBzc,OAChBwkB,cAAexkB,U,0rDC7HJ,SAASgjB,EACtBkC,GAOE,QACF,oMAoBU,CACNtqB,MAAO,OArBX,kBAwBqB,GAxBrB,yBAyCmB,WACf,GAAK,EAAKsiB,QAAV,CAEA,IAAM1P,EAAOsN,IAAS/H,YAAT,MACTvF,aAAgB+J,aAClB,EAAKtC,SAAS,CAAEra,MAAO4S,EAAK2X,kBA9ClC,E,UAAA,O,kOAAA,M,EAAA,G,EAAA,2CA2BIrgB,KAAKoY,SAAU,EAEf/mB,OAAO8Y,iBAAiB,SAAUnK,KAAKsgB,gBAIvCtgB,KAAKsgB,mBAjCT,6CAqCItgB,KAAKoY,SAAU,EACf/mB,OAAOiZ,oBAAoB,SAAUtK,KAAKsgB,kBAtC9C,+BAiDW,MACiCtgB,KAAK1F,MAArCimB,EADD,EACCA,mBAAuBC,EADxB,4BAEP,OAAID,IAAuBvgB,KAAKoY,QAE5B,uBAAKpM,UAAWhM,KAAK1F,MAAM0R,UAAWvC,MAAOzJ,KAAK1F,MAAMmP,QAIrD,gBAAC2W,EAAD,KAAuBI,EAAUxgB,KAAK2N,a,2BAzDjD,GAAmCpY,aAAnC,mBAUwC,CACpCgrB,oBAAoB,IAXxB,gBAcqB,CAGjBA,mBAAoBtX,IAAUf,OAjBlC","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\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactGridLayout\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactGridLayout\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @flow\nimport isEqual from \"lodash.isequal\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nexport type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean\n};\nexport type Layout = Array;\nexport type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};\nexport type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};\n\nexport type PartialPosition = { left: number, top: number };\nexport type DroppingPosition = { left: number, top: number, e: Event };\nexport type Size = { width: number, height: number };\nexport type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};\nexport type GridResizeEvent = { e: Event, node: HTMLElement, size: Size };\nexport type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n target: {\n className: String\n }\n }\n};\n\ntype REl = ReactElement;\nexport type ReactChildren = ReactChildrenArray;\n\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\nexport type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;\nexport type CompactType = ?(\"horizontal\" | \"vertical\");\n\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nexport function childrenEqual(a: ReactChildren, b: ReactChildren): boolean {\n return isEqual(\n React.Children.map(a, c => c.key),\n React.Children.map(b, c => c.key)\n );\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\ntype FastRGLPropsEqual = (Object, Object, Function) => boolean;\nexport const fastRGLPropsEqual: FastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nexport function fastPositionEqual(a: Position, b: Position) {\n return (\n a.left === b.left &&\n a.top === b.top &&\n a.width === b.width &&\n a.height === b.height\n );\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\nexport function compact(\n layout: Layout,\n compactType: CompactType,\n cols: number\n): Layout {\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted);\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(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n\n return out;\n}\n\nconst heightWidth = { x: \"w\", y: \"h\" };\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(\n layout: Layout,\n item: LayoutItem,\n moveToCoord: number,\n axis: \"x\" | \"y\"\n) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout\n .map(layoutItem => {\n return layoutItem.i;\n })\n .indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(\n layout,\n otherItem,\n moveToCoord + item[sizeProp],\n axis\n );\n }\n }\n\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(\n compareWith: Layout,\n l: LayoutItem,\n compactType: CompactType,\n cols: number,\n fullLayout: Layout\n): LayoutItem {\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n while ((collides = getFirstCollision(compareWith, l))) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nexport function correctBounds(\n layout: Layout,\n bounds: { cols: number }\n): Layout {\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);\n else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nexport function getFirstCollision(\n layout: Layout,\n layoutItem: LayoutItem\n): ?LayoutItem {\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nexport function getAllCollisions(\n layout: Layout,\n layoutItem: LayoutItem\n): Array {\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array {\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nexport function moveElement(\n layout: Layout,\n l: LayoutItem,\n x: ?number,\n y: ?number,\n isUserAction: ?boolean,\n preventCollision: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n\n log(\n `Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`\n );\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp =\n compactType === \"vertical\" && typeof y === \"number\"\n ? oldY >= y\n : compactType === \"horizontal\" && typeof x === \"number\"\n ? oldX >= x\n : false;\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n\n // There was a collision; abort\n if (preventCollision && collisions.length) {\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(\n `Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`\n );\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(\n layout,\n collision,\n l,\n isUserAction,\n compactType,\n cols\n );\n } else {\n layout = moveElementAwayFromCollision(\n layout,\n l,\n collision,\n isUserAction,\n compactType,\n cols\n );\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 */\nexport function moveElementAwayFromCollision(\n layout: Layout,\n collidesWith: LayoutItem,\n itemToMove: LayoutItem,\n isUserAction: ?boolean,\n compactType: CompactType,\n cols: number\n): Layout {\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType !== \"horizontal\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\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 // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem: LayoutItem = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!getFirstCollision(layout, fakeItem)) {\n log(\n `Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`\n );\n return moveElement(\n layout,\n itemToMove,\n compactH ? fakeItem.x : undefined,\n compactV ? fakeItem.y : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n }\n }\n\n return moveElement(\n layout,\n itemToMove,\n compactH ? itemToMove.x + 1 : undefined,\n compactV ? itemToMove.y + 1 : undefined,\n isUserAction,\n preventCollision,\n compactType,\n cols\n );\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nexport function perc(num: number): string {\n return num * 100 + \"%\";\n}\n\nexport function setTransform({ top, left, width, height }: Position): Object {\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\nexport function setTopLeft({ top, left, width, height }: Position): Object {\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nexport function sortLayoutItems(\n layout: Layout,\n compactType: CompactType\n): Layout {\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n else return sortLayoutItemsByRowCol(layout);\n}\n\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\nexport function sortLayoutItemsByColRow(layout: Layout): Layout {\n return [].concat(layout).sort(function(a, b) {\n if (a.x > b.x || (a.x === b.x && a.y > b.y)) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nexport function synchronizeLayoutWithChildren(\n initialLayout: Layout,\n children: ReactChildren,\n cols: number,\n compactType: CompactType\n): Layout {\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n let layout: Layout = [];\n React.Children.forEach(children, (child: ReactElement, i: number) => {\n // Don't overwrite if it already exists.\n const exists = getLayoutItem(initialLayout, String(child.key));\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\n \"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\"\n );\n }\n const g = child.props[\"data-grid\"] || child.props._grid;\n\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n layout[i] = cloneLayoutItem({ ...g, i: child.key });\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n });\n\n // Correct the layout.\n layout = correctBounds(layout, { cols: cols });\n layout = compact(layout, compactType, cols);\n\n return layout;\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nexport function validateLayout(\n layout: Layout,\n contextName: string = \"Layout\"\n): void {\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout))\n throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].\" +\n subProps[j] +\n \" must be a number!\"\n );\n }\n }\n if (item.i && typeof item.i !== \"string\") {\n throw new Error(\n \"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\"\n );\n }\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\n \"ReactGridLayout: \" +\n contextName +\n \"[\" +\n i +\n \"].static must be a boolean!\"\n );\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nexport function compactType(\n props: ?{ verticalCompact: boolean, compactType: CompactType }\n): CompactType {\n const { verticalCompact, compactType } = props || {};\n return verticalCompact === false ? null : compactType;\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array): void {\n fns.forEach(key => (el[key] = el[key].bind(el)));\n}\n\nfunction log(...args) {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...args);\n}\n\nexport const noop = () => {};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// @flow\n\nimport { cloneLayout, compact, correctBounds } from \"./utils\";\n\nimport type { CompactType, Layout } from \"./utils\";\n\nexport type ResponsiveLayout = {\n lg?: Layout,\n md?: Layout,\n sm?: Layout,\n xs?: Layout,\n xxs?: Layout\n};\n\ntype Breakpoint = string;\n\ntype Breakpoints = {\n lg?: number,\n md?: number,\n sm?: number,\n xs?: number,\n xxs?: number\n};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(\n breakpoints: Breakpoints,\n width: number\n): Breakpoint {\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nexport function getColsFromBreakpoint(\n breakpoint: Breakpoint,\n cols: Breakpoints\n): number {\n if (!cols[breakpoint]) {\n throw new Error(\n \"ResponsiveReactGridLayout: `cols` entry for breakpoint \" +\n breakpoint +\n \" is missing!\"\n );\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nexport function findOrGenerateResponsiveLayout(\n layouts: ResponsiveLayout,\n breakpoints: Breakpoints,\n breakpoint: Breakpoint,\n lastBreakpoint: Breakpoint,\n cols: number,\n compactType: CompactType\n): Layout {\n // If it already exists, just return it.\n if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(\n breakpointsSorted.indexOf(breakpoint)\n );\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n return compact(correctBounds(layout, { cols: cols }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array {\n const keys: Array = Object.keys(breakpoints);\n return keys.sort(function(a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","// @flow\nimport type { Position } from \"./utils\";\n\nexport type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};\n\n// Helper for generating column width\nexport function calcGridColWidth(positionParams: PositionParams): number {\n const { margin, containerPadding, containerWidth, cols } = positionParams;\n return (\n (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols\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 {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\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 {Position} Object containing coords.\n */\nexport function calcGridItemPosition(\n positionParams: PositionParams,\n x: number,\n y: number,\n w: number,\n h: number,\n state: ?Object\n): Position {\n const { margin, containerPadding, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n // 0 * Infinity === NaN, which causes problems with resize constraints;\n // Fix this if it occurs.\n // Note we do it here rather than later because Math.round(Infinity) causes deopt\n out.width =\n w === Infinity\n ? w\n : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]);\n out.height =\n h === Infinity\n ? h\n : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nexport function calcXY(\n positionParams: PositionParams,\n top: number,\n left: number,\n w: number,\n h: number\n): { x: number, y: number } {\n const { margin, cols, rowHeight, maxRows } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = Math.max(Math.min(x, cols - w), 0);\n y = Math.max(Math.min(y, maxRows - h), 0);\n\n return { x, y };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\nexport function calcWH(\n positionParams: PositionParams,\n width: number,\n height: number,\n x: number,\n y: number\n): { w: number, h: number } {\n const { margin, maxRows, cols, rowHeight } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n w = Math.max(Math.min(w, cols - x), 0);\n h = Math.max(Math.min(h, maxRows - y), 0);\n return { w, h };\n}\n","// @flow\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { DraggableCore } from \"react-draggable\";\nimport { Resizable } from \"react-resizable\";\nimport { fastPositionEqual, perc, setTopLeft, setTransform } from \"./utils\";\nimport { calcGridItemPosition, calcXY, calcWH } from \"./calculateUtils\";\nimport classNames from \"classnames\";\nimport type { Element as ReactElement, Node as ReactNode } from \"react\";\n\nimport type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype PartialPosition = { top: number, left: number };\ntype GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;\n\ntype State = {\n resizing: ?{ width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};\n\ntype Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};\n\n/**\n * An individual item within a ReactGridLayout.\n */\nexport default class GridItem extends React.Component {\n static propTypes = {\n // Children must be only a single element\n children: PropTypes.element,\n\n // General grid attributes\n cols: PropTypes.number.isRequired,\n containerWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n margin: PropTypes.array.isRequired,\n maxRows: PropTypes.number.isRequired,\n containerPadding: PropTypes.array.isRequired,\n\n // These are all in grid units\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired,\n\n // All optional\n minW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW)\n return new Error(\"minWidth larger than item width/maxWidth\");\n },\n\n maxW: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW)\n return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n\n minH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH)\n return new Error(\"minHeight larger than item height/maxHeight\");\n },\n\n maxH: function(props: Props, propName: string) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH)\n return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n\n // ID is nice to have for callbacks\n i: PropTypes.string.isRequired,\n\n // Functions\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrag: PropTypes.func,\n onResizeStop: PropTypes.func,\n onResizeStart: PropTypes.func,\n onResize: PropTypes.func,\n\n // Flags\n isDraggable: PropTypes.bool.isRequired,\n isResizable: PropTypes.bool.isRequired,\n static: PropTypes.bool,\n\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool.isRequired,\n transformScale: PropTypes.number,\n\n // Others\n className: PropTypes.string,\n // Selector for draggable handle\n handle: PropTypes.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: PropTypes.string,\n // Current position of a dropping element\n droppingPosition: PropTypes.shape({\n e: PropTypes.object.isRequired,\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })\n };\n\n static defaultProps = {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n };\n\n state: State = {\n resizing: null,\n dragging: null,\n className: \"\"\n };\n\n currentNode: HTMLElement;\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n // We can't deeply compare children. If the developer memoizes them, we can\n // use this optimization.\n if (this.props.children !== nextProps.children) return true;\n // TODO memoize these calculations so they don't take so long?\n const oldPosition = calcGridItemPosition(\n this.getPositionParams(this.props),\n this.props.x,\n this.props.y,\n this.props.w,\n this.props.h,\n this.state\n );\n const newPosition = calcGridItemPosition(\n this.getPositionParams(nextProps),\n nextProps.x,\n nextProps.y,\n nextProps.w,\n nextProps.h,\n nextState\n );\n return (\n !fastPositionEqual(oldPosition, newPosition) ||\n this.props.useCSSTransforms !== nextProps.useCSSTransforms\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps: Props) {\n const { droppingPosition } = this.props;\n const prevDroppingPosition = prevProps.droppingPosition;\n const { dragging } = this.state;\n\n if (!droppingPosition || !prevDroppingPosition) {\n return;\n }\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((ReactDOM.findDOMNode(this): any): HTMLElement);\n }\n\n const shouldDrag =\n (dragging && droppingPosition.left !== prevDroppingPosition.left) ||\n droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX,\n deltaY\n });\n }\n }\n\n getPositionParams(props: Props = this.props): PositionParams {\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos: Position): { [key: string]: ?string } {\n const { usePercentages, containerWidth, useCSSTransforms } = this.props;\n\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = setTransform(pos);\n } else {\n // top,left (slow)\n style = setTopLeft(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = perc(pos.left / containerWidth);\n style.width = perc(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(\n child: ReactElement,\n isDraggable: boolean\n ): ReactElement {\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(\n child: ReactElement,\n position: Position,\n isResizable: boolean\n ): ReactElement {\n const { cols, x, minW, minH, maxW, maxH, transformScale } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = calcGridItemPosition(positionParams, 0, 0, cols - x, 0)\n .width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = calcGridItemPosition(positionParams, 0, 0, minW, minH);\n const maxes = calcGridItemPosition(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [\n Math.min(maxes.width, maxWidth),\n Math.min(maxes.height, Infinity)\n ];\n return (\n \n {child}\n \n );\n }\n\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStart = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStart) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n // TODO: this wont work on nested parents\n const { offsetParent } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / this.props.transformScale;\n const pLeft = parentRect.left / this.props.transformScale;\n const cTop = clientRect.top / this.props.transformScale;\n const pTop = parentRect.top / this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStart &&\n this.props.onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDrag = (e: Event, { node, deltaX, deltaY }: ReactDraggableCallbackData) => {\n const { onDrag, transformScale } = this.props;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDrag called before onDragStart.\");\n newPosition.left = this.state.dragging.left + deltaX;\n newPosition.top = this.state.dragging.top + deltaY;\n this.setState({ dragging: newPosition });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n onDrag &&\n onDrag.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n onDragStop = (e: Event, { node }: ReactDraggableCallbackData) => {\n if (!this.props.onDragStop) return;\n\n const newPosition: PartialPosition = { top: 0, left: 0 };\n\n if (!this.state.dragging)\n throw new Error(\"onDragEnd called before onDragStart.\");\n newPosition.left = this.state.dragging.left;\n newPosition.top = this.state.dragging.top;\n this.setState({ dragging: null });\n\n const { x, y } = calcXY(\n this.getPositionParams(),\n newPosition.top,\n newPosition.left,\n this.props.w,\n this.props.h\n );\n\n return (\n this.props.onDragStop &&\n this.props.onDragStop.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n })\n );\n };\n\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStop = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStop\");\n };\n\n /**\n * onResizeStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResizeStart = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResizeStart\");\n };\n\n /**\n * onResize event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n onResize = (\n e: Event,\n callbackData: { node: HTMLElement, size: Position }\n ) => {\n this.onResizeHandler(e, callbackData, \"onResize\");\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(\n e: Event,\n { node, size }: { node: HTMLElement, size: Position },\n handlerName: string\n ) {\n const handler = this.props[handlerName];\n if (!handler) return;\n const { cols, x, y, i, maxW, minW, maxH, minH } = this.props;\n\n // Get new XY\n let { w, h } = calcWH(\n this.getPositionParams(),\n size.width,\n size.height,\n x,\n y\n );\n\n // Cap w at numCols\n w = Math.min(w, cols - x);\n // Ensure w is at least 1\n w = Math.max(w, 1);\n\n // Min/max capping\n w = Math.max(Math.min(w, maxW), minW);\n h = Math.max(Math.min(h, maxH), minH);\n\n this.setState({ resizing: handlerName === \"onResizeStop\" ? null : size });\n\n handler.call(this, i, w, h, { e, node, size });\n }\n\n render(): ReactNode {\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n\n const pos = calcGridItemPosition(\n this.getPositionParams(),\n x,\n y,\n w,\n h,\n this.state\n );\n const child = React.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = React.cloneElement(child, {\n className: classNames(\n \"react-grid-item\",\n child.props.className,\n this.props.className,\n {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }\n ),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n\n return newChild;\n }\n}\n","// @flow\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\nimport type { EventCallback, CompactType, Layout, LayoutItem } from \"./utils\";\n\nexport type Props = {|\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: [number, number] | null,\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDrop: (itemPosition: {\n x: number,\n y: number,\n w: number,\n h: number,\n e: Event\n }) => void,\n children: ReactChildrenArray>\n|};\n\nexport default {\n //\n // Basic props\n //\n className: PropTypes.string,\n style: PropTypes.object,\n\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: PropTypes.number,\n\n // If true, the container height swells and contracts to fit contents\n autoSize: PropTypes.bool,\n // # of cols.\n cols: PropTypes.number,\n\n // A selector that will not be draggable.\n draggableCancel: PropTypes.string,\n // A selector for the draggable handler\n draggableHandle: PropTypes.string,\n\n // Deprecated\n verticalCompact: function(props: Props) {\n if (\n props.verticalCompact === false &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" +\n 'Use `compactType`: \"horizontal\" | \"vertical\" | null.'\n );\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: PropTypes.oneOf([\"vertical\", \"horizontal\"]),\n\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function(props: Props) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: PropTypes.arrayOf(PropTypes.number),\n // Padding inside the container [x, y] in px\n containerPadding: PropTypes.arrayOf(PropTypes.number),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: PropTypes.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: PropTypes.number,\n\n //\n // Flags\n //\n isDraggable: PropTypes.bool,\n isResizable: PropTypes.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: PropTypes.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: PropTypes.bool,\n // parent layout transform scale\n transformScale: PropTypes.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: PropTypes.bool,\n\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: PropTypes.func,\n\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: PropTypes.func,\n // Calls on each drag movement.\n onDrag: PropTypes.func,\n // Calls when drag is complete.\n onDragStop: PropTypes.func,\n //Calls when resize starts.\n onResizeStart: PropTypes.func,\n // Calls when resize movement happens.\n onResize: PropTypes.func,\n // Calls when resize is complete.\n onResizeStop: PropTypes.func,\n // Calls when some element is dropped.\n onDrop: PropTypes.func,\n\n //\n // Other validations\n //\n\n droppingItem: PropTypes.shape({\n i: PropTypes.string.isRequired,\n w: PropTypes.number.isRequired,\n h: PropTypes.number.isRequired\n }),\n\n // Children must not have duplicate keys.\n children: function(props: Props, propName: string) {\n var children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n var keys = {};\n React.Children.forEach(children, function(child) {\n if (keys[child.key]) {\n throw new Error(\n 'Duplicate child key \"' +\n child.key +\n '\" found! This will cause problems in ReactGridLayout.'\n );\n }\n keys[child.key] = true;\n });\n }\n};\n","// @flow\nimport React from \"react\";\n\nimport isEqual from \"lodash.isequal\";\nimport classNames from \"classnames\";\nimport {\n autoBindHandlers,\n bottom,\n childrenEqual,\n cloneLayoutItem,\n compact,\n getLayoutItem,\n moveElement,\n synchronizeLayoutWithChildren,\n getAllCollisions,\n compactType,\n noop,\n fastRGLPropsEqual\n} from \"./utils\";\n\nimport { calcXY } from \"./calculateUtils\";\n\nimport GridItem from \"./GridItem\";\nimport ReactGridLayoutPropTypes from \"./ReactGridLayoutPropTypes\";\nimport type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";\n\n// Types\nimport type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";\n\nimport type { PositionParams } from \"./calculateUtils\";\n\ntype State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};\n\nimport type { Props } from \"./ReactGridLayoutPropTypes\";\n\n// End Types\n\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nexport default class ReactGridLayout extends React.Component {\n // TODO publish internal ReactClass displayName transform\n static displayName = \"ReactGridLayout\";\n\n // Refactored to another module to make way for preval\n static propTypes = ReactGridLayoutPropTypes;\n\n static defaultProps = {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity, // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isDraggable: true,\n isResizable: true,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n onLayoutChange: noop,\n onDragStart: noop,\n onDrag: noop,\n onDragStop: noop,\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n onDrop: noop\n };\n\n state: State = {\n activeDrag: null,\n layout: synchronizeLayoutWithChildren(\n this.props.layout,\n this.props.children,\n this.props.cols,\n // Legacy support for verticalCompact: false\n compactType(this.props)\n ),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n };\n\n dragEnterCounter = 0;\n\n constructor(props: Props, context: any): void {\n super(props, context);\n autoBindHandlers(this, [\n \"onDragStart\",\n \"onDrag\",\n \"onDragStop\",\n \"onResizeStart\",\n \"onResize\",\n \"onResizeStop\"\n ]);\n }\n\n componentDidMount() {\n this.setState({ mounted: true });\n // Possibly 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.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n let newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (\n !isEqual(nextProps.layout, prevState.propsLayout) ||\n nextProps.compactType !== prevState.compactType\n ) {\n newLayoutBase = nextProps.layout;\n } else if (!childrenEqual(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = synchronizeLayoutWithChildren(\n newLayoutBase,\n nextProps.children,\n nextProps.cols,\n compactType(nextProps)\n );\n\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n return (\n // NOTE: this is almost always unequal. Therefore the only way to get better performance\n // from SCU is if the user intentionally memoizes children. If they do, and they can\n // handle changes properly, performance will increase.\n this.props.children !== nextProps.children ||\n !fastRGLPropsEqual(this.props, nextProps, isEqual) ||\n !isEqual(this.state.activeDrag, nextState.activeDrag)\n );\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\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 const nbRow = bottom(this.state.layout);\n const containerPaddingY = this.props.containerPadding\n ? this.props.containerPadding[1]\n : this.props.margin[1];\n return (\n nbRow * this.props.rowHeight +\n (nbRow - 1) * this.props.margin[1] +\n containerPaddingY * 2 +\n \"px\"\n );\n }\n\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStart(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldDragItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n return this.props.onDragStart(layout, l, l, null, e, node);\n }\n\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDrag(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n this.props.preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n onDragStop(i: string, x: number, y: number, { e, node }: GridDragEvent) {\n if (!this.state.activeDrag) return;\n\n const { oldDragItem } = this.state;\n let { layout } = this.state;\n const { cols, preventCollision } = this.props;\n const l = getLayoutItem(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = moveElement(\n layout,\n l,\n x,\n y,\n isUserAction,\n preventCollision,\n compactType(this.props),\n cols\n );\n\n this.props.onDragStop(layout, oldDragItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n onLayoutMaybeChanged(newLayout: Layout, oldLayout: ?Layout) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!isEqual(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n\n onResizeStart(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout } = this.state;\n var l = getLayoutItem(layout, i);\n if (!l) return;\n\n this.setState({\n oldResizeItem: cloneLayoutItem(l),\n oldLayout: this.state.layout\n });\n\n this.props.onResizeStart(layout, l, l, null, e, node);\n }\n\n onResize(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols, preventCollision } = this.props;\n const l: ?LayoutItem = getLayoutItem(layout, i);\n if (!l) return;\n\n // Something like quad tree should be used\n // to find collisions faster\n let hasCollisions;\n if (preventCollision) {\n const collisions = getAllCollisions(layout, { ...l, w, h }).filter(\n layoutItem => layoutItem.i !== l.i\n );\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n let leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(layoutItem => {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n // Create placeholder element (display only)\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n this.props.onResize(layout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the layout and set the drag placeholder.\n this.setState({\n layout: compact(layout, compactType(this.props), cols),\n activeDrag: placeholder\n });\n }\n\n onResizeStop(i: string, w: number, h: number, { e, node }: GridResizeEvent) {\n const { layout, oldResizeItem } = this.state;\n const { cols } = this.props;\n var l = getLayoutItem(layout, i);\n\n this.props.onResizeStop(layout, oldResizeItem, l, null, e, node);\n\n // Set state\n const newLayout = compact(layout, compactType(this.props), cols);\n const { oldLayout } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder(): ?ReactElement {\n const { activeDrag } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return (\n \n
    \n \n );\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(\n child: ReactElement,\n isDroppingItem?: boolean\n ): ?ReactElement {\n if (!child || !child.key) return;\n const l = getLayoutItem(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle\n } = this.props;\n const { mounted, droppingPosition } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable =\n typeof l.isDraggable === \"boolean\"\n ? l.isDraggable\n : !l.static && isDraggable;\n const resizable =\n typeof l.isResizable === \"boolean\"\n ? l.isResizable\n : !l.static && isResizable;\n\n return (\n \n {child}\n \n );\n }\n\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n onDragOver = (e: DragOverEvent) => {\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (\n isFirefox &&\n e.nativeEvent.target.className.indexOf(layoutClassName) === -1\n ) {\n return false;\n }\n\n const {\n droppingItem,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding\n } = this.props;\n const { layout } = this.state;\n // This is relative to the DOM element that this event fired for.\n const { layerX, layerY } = e.nativeEvent;\n const droppingPosition = { left: layerX, top: layerY, e };\n\n if (!this.state.droppingDOMNode) {\n const positionParams: PositionParams = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n\n const calculatedPosition = calcXY(\n positionParams,\n layerY,\n layerX,\n droppingItem.w,\n droppingItem.h\n );\n\n this.setState({\n droppingDOMNode:
    ,\n droppingPosition,\n layout: [\n ...layout,\n {\n ...droppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }\n ]\n });\n } else if (this.state.droppingPosition) {\n const { left, top } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({ droppingPosition });\n }\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n removeDroppingPlaceholder = () => {\n const { droppingItem, cols } = this.props;\n const { layout } = this.state;\n\n const newLayout = compact(\n layout.filter(l => l.i !== droppingItem.i),\n compactType(this.props),\n cols\n );\n\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n };\n\n onDragLeave = () => {\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n };\n\n onDragEnter = () => {\n this.dragEnterCounter++;\n };\n\n onDrop = (e: Event) => {\n const { droppingItem } = this.props;\n const { layout } = this.state;\n const { x, y, w, h } = layout.find(l => l.i === droppingItem.i) || {};\n\n // reset gragEnter counter on drop\n this.dragEnterCounter = 0;\n\n this.removeDroppingPlaceholder();\n\n this.props.onDrop({ x, y, w, h, e });\n };\n\n render() {\n const { className, style, isDroppable } = this.props;\n\n const mergedClassName = classNames(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n\n return (\n \n {React.Children.map(this.props.children, child =>\n this.processGridItem(child)\n )}\n {isDroppable &&\n this.state.droppingDOMNode &&\n this.processGridItem(this.state.droppingDOMNode, true)}\n {this.placeholder()}\n
    \n );\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n slackW: 0,\n slackH: 0\n });\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n } // If you do this, be careful of constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // Fit width & height to aspect ratio\n\n if (this.props.lockAspectRatio) {\n if (height === this.props.height) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _this$state = this.state,\n slackW = _this$state.slackW,\n slackH = _this$state.slackH;\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the numbers changed, we must have introduced some slack. Record it for the next iteration.\n\n\n slackW += oldW - width;\n slackH += oldH - height;\n\n if (slackW !== this.state.slackW || slackH !== this.state.slackH) {\n this.setState({\n slackW: slackW,\n slackH: slackH\n });\n }\n\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n deltaX /= _this2.props.transformScale;\n deltaY /= _this2.props.transformScale; // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && ['e', 'w'].indexOf(axis) === -1; // reverse delta if using top or left drag handles\n\n if (canDragX && axis[axis.length - 1] === 'w') {\n deltaX = -deltaX;\n }\n\n if (canDragY && axis[0] === 'n') {\n deltaY = -deltaY;\n } // Update w/h\n\n\n var width = _this2.props.width + (canDragX ? deltaX : 0);\n var height = _this2.props.height + (canDragY ? deltaY : 0); // Early return if no change\n\n var widthChanged = width !== _this2.props.width,\n heightChanged = height !== _this2.props.height;\n if (handlerName === 'onResize' && !widthChanged && !heightChanged) return;\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n // Set the appropriate state for this handler.\n var newState = {};\n\n if (handlerName === 'onResizeStart') {// nothing\n } else if (handlerName === 'onResizeStop') {\n newState.slackW = newState.slackH = 0;\n } else {\n // Early return if no change after constraints\n if (width === _this2.props.width && height === _this2.props.height) return;\n }\n\n var hasCb = typeof _this2.props[handlerName] === 'function';\n\n if (hasCb) {\n // $FlowIgnore isn't refining this correctly to SyntheticEvent\n if (typeof e.persist === 'function') e.persist();\n\n _this2.setState(newState, function () {\n return _this2.props[handlerName](e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n });\n } else {\n _this2.setState(newState);\n }\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandle) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandle);\n }\n\n return handle;\n }\n\n return _react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandle\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"draggableOpts\", \"width\", \"height\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]);\n\n var className = p.className ? p.className + \" react-resizable\" : 'react-resizable'; // 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 // One or more draggable handles.\n\n return (0, _utils.cloneElement)(children, _objectSpread({}, p, {\n className: className,\n children: [children.props.children, resizeHandles.map(function (h) {\n return _react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + h,\n onStop: _this3.resizeHandler('onResizeStop', h),\n onStart: _this3.resizeHandler('onResizeStart', h),\n onDrag: _this3.resizeHandler('onResize', h)\n }), _this3.renderResizeHandle(h));\n })]\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", {\n //\n // Required Props\n //\n // Require that one and only one child be present.\n children: _propTypes.default.element.isRequired,\n // Initial w/h\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n //\n // Optional props\n //\n // Custom resize handle\n handle: _propTypes.default.element,\n // If you change this, be sure to update your css\n handleSize: _propTypes.default.array,\n // Defines which resize handles should be rendered (default: 'se')\n // Allows for any combination of:\n // 's' - South handle (bottom-center)\n // 'w' - West handle (left-center)\n // 'e' - East handle (right-center)\n // 'n' - North handle (top-center)\n // 'sw' - Southwest handle (bottom-left)\n // 'nw' - Northwest handle (top-left)\n // 'se' - Southeast handle (bottom-right)\n // 'ne' - Northeast handle (top-center)\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n transformScale: _propTypes.default.number,\n // If true, will only allow width/height to move in lockstep\n lockAspectRatio: _propTypes.default.bool,\n // Restricts resizing to a particular axis (default: 'both')\n // 'both' - allows resizing by width or height\n // 'x' - only allows the width to be changed\n // 'y' - only allows the height to be changed\n // 'none' - disables resizing altogether\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n // Min/max size\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n // Callbacks\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // These will be passed wholesale to react-draggable's DraggableCore\n draggableOpts: _propTypes.default.object\n});\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","module.exports = require(\"./lib/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./lib/utils\");\nmodule.exports.Responsive = require(\"./lib/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./lib/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./lib/components/WidthProvider\").default;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread({}, element.props.style, {}, props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return _react.default.cloneElement(element, props);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// An example use of Resizable.\nvar ResizableBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n var width = size.width,\n height = size.height;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\"]);\n\n return _react.default.createElement(_Resizable.default, {\n handle: handle,\n handleSize: handleSize,\n width: this.state.width,\n height: this.state.height,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n draggableOpts: draggableOpts,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n lockAspectRatio: lockAspectRatio,\n axis: axis,\n resizeHandles: resizeHandles\n }, _react.default.createElement(\"div\", _extends({\n style: {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n }\n }, props)));\n };\n\n return ResizableBox;\n}(_react.default.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", {\n height: _propTypes.default.number,\n width: _propTypes.default.number\n});\n\n_defineProperty(ResizableBox, \"defaultProps\", {\n handleSize: [20, 20]\n});","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash.isequal\";\n\nimport {\n cloneLayout,\n synchronizeLayoutWithChildren,\n validateLayout,\n noop\n} from \"./utils\";\nimport {\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n findOrGenerateResponsiveLayout\n} from \"./responsiveUtils\";\nimport ReactGridLayout from \"./ReactGridLayout\";\nimport type { Layout } from \"./utils\";\n\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\nfunction getIndentationValue(\n param: { [key: string]: [number, number] } | [number, number],\n breakpoint: string\n) {\n return Array.isArray(param) ? param : param[breakpoint];\n}\n\ntype State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};\n\ntype Props = {|\n ...React.ElementConfig,\n\n // Responsive config\n breakpoint?: ?Breakpoint,\n breakpoints: { [key: Breakpoint]: number },\n cols: { [key: Breakpoint]: number },\n layouts: { [key: Breakpoint]: Layout },\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n containerPadding: { [key: Breakpoint]: [number, number] } | [number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: [number, number] | null\n ) => void\n|};\n\nexport default class ResponsiveReactGridLayout extends React.Component<\n Props<>,\n State\n> {\n // This should only include propTypes needed in this code; RGL itself\n // will do validation of the rest props passed to it.\n static propTypes = {\n //\n // 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: PropTypes.string,\n\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: PropTypes.object,\n\n // # of cols. This is a breakpoint -> cols map\n cols: PropTypes.object,\n\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props: Props<>, propName: string) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\n \"Layout property must be an object. Received: \" +\n type(props[propName])\n );\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\n \"Each key in layouts must align with a key in breakpoints.\"\n );\n }\n validateLayout(props.layouts[key], \"layouts.\" + key);\n });\n },\n\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: PropTypes.number.isRequired,\n\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: PropTypes.func,\n\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: PropTypes.func,\n\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: PropTypes.func\n };\n\n static defaultProps = {\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n layouts: {},\n margin: [10, 10],\n containerPadding: {\n lg: [0, 0],\n md: [0, 0],\n sm: [0, 0],\n xs: [0, 0],\n xxs: [0, 0]\n },\n onBreakpointChange: noop,\n onLayoutChange: noop,\n onWidthChange: noop\n };\n\n state = this.generateInitialState();\n\n generateInitialState(): State {\n const { width, breakpoints, layouts, cols } = this.props;\n const breakpoint = getBreakpointFromWidth(breakpoints, width);\n const colNo = getColsFromBreakpoint(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType =\n this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = findOrGenerateResponsiveLayout(\n layouts,\n breakpoints,\n breakpoint,\n breakpoint,\n colNo,\n compactType\n );\n\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n\n static getDerivedStateFromProps(nextProps: Props<*>, prevState: State) {\n if (!isEqual(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const { breakpoint, cols } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = findOrGenerateResponsiveLayout(\n nextProps.layouts,\n nextProps.breakpoints,\n breakpoint,\n breakpoint,\n cols,\n nextProps.compactType\n );\n return { layout: newLayout, layouts: nextProps.layouts };\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps: Props<*>) {\n // Allow parent to set width or breakpoint directly.\n if (\n this.props.width != prevProps.width ||\n this.props.breakpoint !== prevProps.breakpoint ||\n !isEqual(this.props.breakpoints, prevProps.breakpoints) ||\n !isEqual(this.props.cols, prevProps.cols)\n ) {\n this.onWidthChange(prevProps);\n }\n }\n\n // wrap layouts so we do not need to pass layouts to child\n onLayoutChange = (layout: Layout) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\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(prevProps: Props<*>) {\n const { breakpoints, cols, layouts, compactType } = this.props;\n const newBreakpoint =\n this.props.breakpoint ||\n getBreakpointFromWidth(this.props.breakpoints, this.props.width);\n\n const lastBreakpoint = this.state.breakpoint;\n const newCols: number = getColsFromBreakpoint(newBreakpoint, cols);\n const newLayouts = { ...layouts };\n\n // Breakpoint change\n if (\n lastBreakpoint !== newBreakpoint ||\n prevProps.breakpoints !== breakpoints ||\n prevProps.cols !== cols\n ) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts))\n newLayouts[lastBreakpoint] = cloneLayout(this.state.layout);\n\n // Find or generate a new layout.\n let layout = findOrGenerateResponsiveLayout(\n newLayouts,\n breakpoints,\n newBreakpoint,\n lastBreakpoint,\n newCols,\n compactType\n );\n\n // This adds missing items.\n layout = synchronizeLayoutWithChildren(\n layout,\n this.props.children,\n newCols,\n compactType\n );\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(\n this.props.containerPadding,\n newBreakpoint\n );\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(\n this.props.width,\n margin,\n newCols,\n containerPadding\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n \n );\n }\n}\n","// @flow\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOM from \"react-dom\";\n\ntype WPDefaultProps = {|\n measureBeforeMount: boolean\n|};\n\n// eslint-disable-next-line no-unused-vars\ntype WPProps = {|\n className?: string,\n style?: Object,\n ...WPDefaultProps\n|};\n\ntype WPState = {|\n width: number\n|};\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\nexport default function WidthProvider(\n ComposedComponent: React.AbstractComponent\n): React.AbstractComponent<{|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n|}> {\n return class WidthProvider extends React.Component<\n {|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n |},\n WPState\n > {\n static defaultProps: WPDefaultProps = {\n measureBeforeMount: false\n };\n\n static propTypes = {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: PropTypes.bool\n };\n\n state = {\n width: 1280\n };\n\n mounted: boolean = false;\n\n componentDidMount() {\n this.mounted = true;\n\n window.addEventListener(\"resize\", this.onWindowResize);\n // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n this.onWindowResize();\n }\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize = () => {\n if (!this.mounted) return;\n // eslint-disable-next-line react/no-find-dom-node\n const node = ReactDOM.findDOMNode(this); // Flow casts this to Text | Element\n if (node instanceof HTMLElement)\n this.setState({ width: node.offsetWidth });\n };\n\n render() {\n const { measureBeforeMount, ...rest } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return (\n
    \n );\n }\n\n return ;\n }\n };\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 57c97b968..949e21e89 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-grid-layout", - "version": "0.18.1", + "version": "0.18.2", "description": "A draggable and resizable grid layout with responsive breakpoints, for React.", "main": "index.js", "scripts": { From 6ec7d745060f1fded7b509dff92a84ba9fe1282e Mon Sep 17 00:00:00 2001 From: Mats Byrkjeland Date: Wed, 11 Mar 2020 16:17:13 +0100 Subject: [PATCH 083/101] Fix example of memoizing children in README.md (#1158) The `count` variable comes from props, not as an argument to the useMemo callback. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 53b9e1323..7d15477be 100644 --- a/README.md +++ b/README.md @@ -468,9 +468,9 @@ shouldComponentUpdate(nextProps: Props, nextState: State) { If you memoize your children, you can take advantage of this, and reap faster rerenders. For example: ```js -function MyGrid() { - const children = React.useMemo((count) => { - return new Array(count).fill(undefined).map((val, idx) => { +function MyGrid(props) { + const children = React.useMemo(() => { + return new Array(props.count).fill(undefined).map((val, idx) => { return
    ; }); }, [props.count]); From 20dac73f91274526034c00968b5bedb9c2ed36b9 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Wed, 11 Mar 2020 17:07:07 -0400 Subject: [PATCH 084/101] Add enzyme testing. (#1163) * test(enzyme): add basic enzyme snapshot test * test(flow): make Layout a $ReadOnlyArray * test(RRGL): test that layouts is not modified * test(lifecycle): add deep snapshots * fix(webpack): remove esm mode for now, not useful * fix(test): rem chance so we're fully deterministic * test(travis): ensure node 12 sort algo doesn't blow up tests * fix(showcase): make random placement more appealing --- .babelrc.js | 8 +- .eslintrc.json | 5 + .flowconfig | 1 + .travis.yml | 4 +- Makefile | 9 +- flow-typed/npm/classnames_v2.x.x.js | 23 + flow-typed/npm/enzyme_v3.x.x.js | 143 + flow-typed/npm/jest_v24.x.x.js | 1182 +++ lib/ResponsiveReactGridLayout.jsx | 12 +- lib/responsiveUtils.js | 33 +- lib/utils.js | 37 +- package.json | 14 +- test/examples/0-showcase.jsx | 9 +- .../spec/__snapshots__/lifecycle-test.js.snap | 8726 +++++++++++++++++ test/spec/lifecycle-test.js | 75 + test/spec/utils-test.js | 13 +- test/test-hook.jsx | 8 +- test/util/deepFreeze.js | 35 + test/util/setupTests.js | 16 + webpack.config.js | 3 +- yarn.lock | 395 +- 21 files changed, 10681 insertions(+), 70 deletions(-) create mode 100644 flow-typed/npm/classnames_v2.x.x.js create mode 100644 flow-typed/npm/enzyme_v3.x.x.js create mode 100644 flow-typed/npm/jest_v24.x.x.js create mode 100644 test/spec/__snapshots__/lifecycle-test.js.snap create mode 100644 test/spec/lifecycle-test.js create mode 100644 test/util/deepFreeze.js create mode 100644 test/util/setupTests.js diff --git a/.babelrc.js b/.babelrc.js index dd572d391..14d7098e7 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -1,12 +1,14 @@ -"use strict"; +// @flow + +const es6Compat = process.env.BABEL_ES_COMPAT === "6" || process.env.NODE_ENV === "test"; module.exports = { presets: [ [ "@babel/preset-env", { - targets: "> 0.25%, not dead" - } + targets: es6Compat ? "maintained node versions" : "> 0.25%, not dead" + }, ], "@babel/react", "@babel/preset-flow" diff --git a/.eslintrc.json b/.eslintrc.json index d70ab8e86..20a8e98c6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -13,6 +13,11 @@ "rules": { "no-console": 0, "no-use-before-define": [2, "nofunc"], + "no-unused-vars": [1, { + "argsIgnorePattern": "^(e|_.*)$", + "vars": "local", + "varsIgnorePattern": "(debug|^_)" + }], "prefer-const": 2, "react/jsx-boolean-value": [2, "always"] }, diff --git a/.flowconfig b/.flowconfig index 3a08ec336..6e2d4c6f7 100644 --- a/.flowconfig +++ b/.flowconfig @@ -12,6 +12,7 @@ [libs] interfaces/ +flow-typed/ [options] emoji=true diff --git a/.travis.yml b/.travis.yml index 041ad59b9..d454f3501 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: node_js node_js: - - "node" + - 8 + - 10 + - 12 - "lts/*" script: - make build test diff --git a/Makefile b/Makefile index c7742a032..e6ff7df68 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ clean: dev: @$(BIN)/webpack-dev-server --config webpack-dev-server.config.js \ - --hot --progress --colors + --hot --progress --colors # Allows usage of `make install`, `make link` install link: @@ -41,7 +41,7 @@ build-example: view-example: env CONTENT_BASE="/examples/" node ./examples/generate.js - @$(BIN)/webpack-dev-server --config webpack-examples.config.js --progress --colors + @$(BIN)/webpack-dev-server --config webpack-examples.config.js --progress --colors # FIXME flow is usually global lint: @@ -49,7 +49,10 @@ lint: @$(BIN)/eslint --ext .js,.jsx $(LIB) $(TEST) test: - @$(BIN)/jest + env NODE_ENV=test $(BIN)/jest + +test-watch: + env NODE_ENV=test $(BIN)/jest --watch release-patch: build lint test @$(call release,patch) diff --git a/flow-typed/npm/classnames_v2.x.x.js b/flow-typed/npm/classnames_v2.x.x.js new file mode 100644 index 000000000..27057f033 --- /dev/null +++ b/flow-typed/npm/classnames_v2.x.x.js @@ -0,0 +1,23 @@ +// flow-typed signature: a00cf41b09af4862583460529d5cfcb9 +// flow-typed version: c6154227d1/classnames_v2.x.x/flow_>=v0.104.x + +type $npm$classnames$Classes = + | string + | { [className: string]: *, ... } + | false + | void + | null; + +declare module "classnames" { + declare module.exports: ( + ...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]> + ) => string; +} + +declare module "classnames/bind" { + declare module.exports: $Exports<"classnames">; +} + +declare module "classnames/dedupe" { + declare module.exports: $Exports<"classnames">; +} diff --git a/flow-typed/npm/enzyme_v3.x.x.js b/flow-typed/npm/enzyme_v3.x.x.js new file mode 100644 index 000000000..fe4586e5f --- /dev/null +++ b/flow-typed/npm/enzyme_v3.x.x.js @@ -0,0 +1,143 @@ +// flow-typed signature: 931d5482afcb022bcbddb841fd08d683 +// flow-typed version: 5175c53189/enzyme_v3.x.x/flow_>=v0.104.x + +declare module "enzyme" { + declare type PredicateFunction> = ( + wrapper: T, + index: number + ) => boolean; + declare type UntypedSelector = string | { [key: string]: number|string|boolean, ... }; + declare type EnzymeSelector = UntypedSelector | React$ElementType; + + // CheerioWrapper is a type alias for an actual cheerio instance + // TODO: Reference correct type from cheerio's type declarations + declare type CheerioWrapper = any; + + declare class Wrapper { + equals(node: React$Element): boolean, + find(selector: UntypedSelector): this, + find(selector: T): ReactWrapper, + findWhere(predicate: PredicateFunction): this, + filter(selector: UntypedSelector): this, + filter(selector: T): ReactWrapper, + filterWhere(predicate: PredicateFunction): this, + hostNodes(): this, + contains(nodes: React$Node): boolean, + containsMatchingElement(node: React$Node): boolean, + containsAllMatchingElements(nodes: React$Node): boolean, + containsAnyMatchingElements(nodes: React$Node): boolean, + dive(option?: { context?: Object, ... }): this, + exists(selector?: EnzymeSelector): boolean, + isEmptyRender(): boolean, + matchesElement(node: React$Node): boolean, + hasClass(className: string): boolean, + is(selector: EnzymeSelector): boolean, + isEmpty(): boolean, + not(selector: EnzymeSelector): this, + children(selector?: UntypedSelector): this, + children(selector: T): ReactWrapper, + childAt(index: number): this, + parents(selector?: UntypedSelector): this, + parents(selector: T): ReactWrapper, + parent(): this, + closest(selector: UntypedSelector): this, + closest(selector: T): ReactWrapper, + render(): CheerioWrapper, + renderProp(propName: string): (...args: Array) => this, + unmount(): this, + text(): string, + html(): string, + invoke(propName: string): (...args: $ReadOnlyArray) => mixed, + get(index: number): React$Node, + getDOMNode(): HTMLElement | HTMLInputElement, + at(index: number): this, + first(): this, + last(): this, + state(key?: string): any, + context(key?: string): any, + props(): Object, + prop(key: string): any, + key(): string, + simulate(event: string, ...args: Array): this, + simulateError(error: Error): this, + slice(begin?: number, end?: number): this, + setState(state: {...}, callback?: () => void): this, + setProps(props: {...}, callback?: () => void): this, + setContext(context: Object): this, + instance(): React$ElementRef, + update(): this, + debug(options?: Object): string, + type(): string | Function | null, + name(): string, + forEach(fn: (node: this, index: number) => mixed): this, + map(fn: (node: this, index: number) => T): Array, + reduce( + fn: (value: T, node: this, index: number) => T, + initialValue?: T + ): Array, + reduceRight( + fn: (value: T, node: this, index: number) => T, + initialValue?: T + ): Array, + some(selector: EnzymeSelector): boolean, + someWhere(predicate: PredicateFunction): boolean, + every(selector: EnzymeSelector): boolean, + everyWhere(predicate: PredicateFunction): boolean, + length: number + } + + declare class ReactWrapper extends Wrapper { + constructor(nodes: React$Element, root: any, options?: ?Object): ReactWrapper, + mount(): this, + ref(refName: string): this, + detach(): void + } + + declare class ShallowWrapper extends Wrapper { + constructor( + nodes: React$Element, + root: any, + options?: ?Object + ): ShallowWrapper, + equals(node: React$Node): boolean, + shallow(options?: { context?: Object, ... }): ShallowWrapper, + getElement(): React$Node, + getElements(): Array + } + + declare function shallow( + node: React$Element, + options?: { + context?: Object, + disableLifecycleMethods?: boolean, + ... + } + ): ShallowWrapper; + declare function mount( + node: React$Element, + options?: { + context?: Object, + attachTo?: HTMLElement, + childContextTypes?: Object, + ... + } + ): ReactWrapper; + declare function render( + node: React$Node, + options?: { context?: Object, ... } + ): CheerioWrapper; + + declare module.exports: { + configure(options: { + Adapter?: any, + disableLifecycleMethods?: boolean, + ... + }): void, + render: typeof render, + mount: typeof mount, + shallow: typeof shallow, + ShallowWrapper: typeof ShallowWrapper, + ReactWrapper: typeof ReactWrapper, + ... + }; +} diff --git a/flow-typed/npm/jest_v24.x.x.js b/flow-typed/npm/jest_v24.x.x.js new file mode 100644 index 000000000..f9790b5e3 --- /dev/null +++ b/flow-typed/npm/jest_v24.x.x.js @@ -0,0 +1,1182 @@ +// flow-typed signature: 27f8467378a99b6130bd20f54f31a644 +// flow-typed version: 6cb9e99836/jest_v24.x.x/flow_>=v0.104.x + +type JestMockFn, TReturn> = { + (...args: TArguments): TReturn, + /** + * An object for introspecting mock calls + */ + mock: { + /** + * An array that represents all calls that have been made into this mock + * function. Each call is represented by an array of arguments that were + * passed during the call. + */ + calls: Array, + /** + * An array that contains all the object instances that have been + * instantiated from this mock function. + */ + instances: Array, + /** + * An array that contains all the object results that have been + * returned by this mock function call + */ + results: Array<{ + isThrow: boolean, + value: TReturn, + ... + }>, + ... + }, + /** + * Resets all information stored in the mockFn.mock.calls and + * mockFn.mock.instances arrays. Often this is useful when you want to clean + * up a mock's usage data between two assertions. + */ + mockClear(): void, + /** + * Resets all information stored in the mock. This is useful when you want to + * completely restore a mock back to its initial state. + */ + mockReset(): void, + /** + * Removes the mock and restores the initial implementation. This is useful + * when you want to mock functions in certain test cases and restore the + * original implementation in others. Beware that mockFn.mockRestore only + * works when mock was created with jest.spyOn. Thus you have to take care of + * restoration yourself when manually assigning jest.fn(). + */ + mockRestore(): void, + /** + * Accepts a function that should be used as the implementation of the mock. + * The mock itself will still record all calls that go into and instances + * that come from itself -- the only difference is that the implementation + * will also be executed when the mock is called. + */ + mockImplementation( + fn: (...args: TArguments) => TReturn + ): JestMockFn, + /** + * Accepts a function that will be used as an implementation of the mock for + * one call to the mocked function. Can be chained so that multiple function + * calls produce different results. + */ + mockImplementationOnce( + fn: (...args: TArguments) => TReturn + ): JestMockFn, + /** + * Accepts a string to use in test result output in place of "jest.fn()" to + * indicate which mock function is being referenced. + */ + mockName(name: string): JestMockFn, + /** + * Just a simple sugar function for returning `this` + */ + mockReturnThis(): void, + /** + * Accepts a value that will be returned whenever the mock function is called. + */ + mockReturnValue(value: TReturn): JestMockFn, + /** + * Sugar for only returning a value once inside your mock + */ + mockReturnValueOnce(value: TReturn): JestMockFn, + /** + * Sugar for jest.fn().mockImplementation(() => Promise.resolve(value)) + */ + mockResolvedValue(value: TReturn): JestMockFn>, + /** + * Sugar for jest.fn().mockImplementationOnce(() => Promise.resolve(value)) + */ + mockResolvedValueOnce( + value: TReturn + ): JestMockFn>, + /** + * Sugar for jest.fn().mockImplementation(() => Promise.reject(value)) + */ + mockRejectedValue(value: TReturn): JestMockFn>, + /** + * Sugar for jest.fn().mockImplementationOnce(() => Promise.reject(value)) + */ + mockRejectedValueOnce(value: TReturn): JestMockFn>, + ... +}; + +type JestAsymmetricEqualityType = { /** + * A custom Jasmine equality tester + */ +asymmetricMatch(value: mixed): boolean, ... }; + +type JestCallsType = { + allArgs(): mixed, + all(): mixed, + any(): boolean, + count(): number, + first(): mixed, + mostRecent(): mixed, + reset(): void, + ... +}; + +type JestClockType = { + install(): void, + mockDate(date: Date): void, + tick(milliseconds?: number): void, + uninstall(): void, + ... +}; + +type JestMatcherResult = { + message?: string | (() => string), + pass: boolean, + ... +}; + +type JestMatcher = ( + received: any, + ...actual: Array +) => JestMatcherResult | Promise; + +type JestPromiseType = { + /** + * Use rejects to unwrap the reason of a rejected promise so any other + * matcher can be chained. If the promise is fulfilled the assertion fails. + */ + rejects: JestExpectType, + /** + * Use resolves to unwrap the value of a fulfilled promise so any other + * matcher can be chained. If the promise is rejected the assertion fails. + */ + resolves: JestExpectType, + ... +}; + +/** + * Jest allows functions and classes to be used as test names in test() and + * describe() + */ +type JestTestName = string | Function; + +/** + * Plugin: jest-styled-components + */ + +type JestStyledComponentsMatcherValue = + | string + | JestAsymmetricEqualityType + | RegExp + | typeof undefined; + +type JestStyledComponentsMatcherOptions = { + media?: string, + modifier?: string, + supports?: string, + ... +}; + +type JestStyledComponentsMatchersType = { toHaveStyleRule( + property: string, + value: JestStyledComponentsMatcherValue, + options?: JestStyledComponentsMatcherOptions +): void, ... }; + +/** + * Plugin: jest-enzyme + */ +type EnzymeMatchersType = { + // 5.x + toBeEmpty(): void, + toBePresent(): void, + // 6.x + toBeChecked(): void, + toBeDisabled(): void, + toBeEmptyRender(): void, + toContainMatchingElement(selector: string): void, + toContainMatchingElements(n: number, selector: string): void, + toContainExactlyOneMatchingElement(selector: string): void, + toContainReact(element: React$Element): void, + toExist(): void, + toHaveClassName(className: string): void, + toHaveHTML(html: string): void, + toHaveProp: ((propKey: string, propValue?: any) => void) & + ((props: {...}) => void), + toHaveRef(refName: string): void, + toHaveState: ((stateKey: string, stateValue?: any) => void) & + ((state: {...}) => void), + toHaveStyle: ((styleKey: string, styleValue?: any) => void) & + ((style: {...}) => void), + toHaveTagName(tagName: string): void, + toHaveText(text: string): void, + toHaveValue(value: any): void, + toIncludeText(text: string): void, + toMatchElement( + element: React$Element, + options?: {| ignoreProps?: boolean, verbose?: boolean |} + ): void, + toMatchSelector(selector: string): void, + // 7.x + toHaveDisplayName(name: string): void, + ... +}; + +// DOM testing library extensions (jest-dom) +// https://github.com/testing-library/jest-dom +type DomTestingLibraryType = { + /** + * @deprecated + */ + toBeInTheDOM(container?: HTMLElement): void, + toBeInTheDocument(): void, + toBeVisible(): void, + toBeEmpty(): void, + toBeDisabled(): void, + toBeEnabled(): void, + toBeInvalid(): void, + toBeRequired(): void, + toBeValid(): void, + toContainElement(element: HTMLElement | null): void, + toContainHTML(htmlText: string): void, + toHaveAttribute(attr: string, value?: any): void, + toHaveClass(...classNames: string[]): void, + toHaveFocus(): void, + toHaveFormValues(expectedValues: { [name: string]: any, ... }): void, + toHaveStyle(css: string): void, + toHaveTextContent( + text: string | RegExp, + options?: { normalizeWhitespace: boolean, ... } + ): void, + toHaveValue(value?: string | string[] | number): void, + ... +}; + +// Jest JQuery Matchers: https://github.com/unindented/custom-jquery-matchers +type JestJQueryMatchersType = { + toExist(): void, + toHaveLength(len: number): void, + toHaveId(id: string): void, + toHaveClass(className: string): void, + toHaveTag(tag: string): void, + toHaveAttr(key: string, val?: any): void, + toHaveProp(key: string, val?: any): void, + toHaveText(text: string | RegExp): void, + toHaveData(key: string, val?: any): void, + toHaveValue(val: any): void, + toHaveCss(css: { [key: string]: any, ... }): void, + toBeChecked(): void, + toBeDisabled(): void, + toBeEmpty(): void, + toBeHidden(): void, + toBeSelected(): void, + toBeVisible(): void, + toBeFocused(): void, + toBeInDom(): void, + toBeMatchedBy(sel: string): void, + toHaveDescendant(sel: string): void, + toHaveDescendantWithText(sel: string, text: string | RegExp): void, + ... +}; + +// Jest Extended Matchers: https://github.com/jest-community/jest-extended +type JestExtendedMatchersType = { + /** + * Note: Currently unimplemented + * Passing assertion + * + * @param {String} message + */ + // pass(message: string): void; + + /** + * Note: Currently unimplemented + * Failing assertion + * + * @param {String} message + */ + // fail(message: string): void; + + /** + * Use .toBeEmpty when checking if a String '', Array [] or Object {} is empty. + */ + toBeEmpty(): void, + /** + * Use .toBeOneOf when checking if a value is a member of a given Array. + * @param {Array.<*>} members + */ + toBeOneOf(members: any[]): void, + /** + * Use `.toBeNil` when checking a value is `null` or `undefined`. + */ + toBeNil(): void, + /** + * Use `.toSatisfy` when you want to use a custom matcher by supplying a predicate function that returns a `Boolean`. + * @param {Function} predicate + */ + toSatisfy(predicate: (n: any) => boolean): void, + /** + * Use `.toBeArray` when checking if a value is an `Array`. + */ + toBeArray(): void, + /** + * Use `.toBeArrayOfSize` when checking if a value is an `Array` of size x. + * @param {Number} x + */ + toBeArrayOfSize(x: number): void, + /** + * Use `.toIncludeAllMembers` when checking if an `Array` contains all of the same members of a given set. + * @param {Array.<*>} members + */ + toIncludeAllMembers(members: any[]): void, + /** + * Use `.toIncludeAnyMembers` when checking if an `Array` contains any of the members of a given set. + * @param {Array.<*>} members + */ + toIncludeAnyMembers(members: any[]): void, + /** + * Use `.toSatisfyAll` when you want to use a custom matcher by supplying a predicate function that returns a `Boolean` for all values in an array. + * @param {Function} predicate + */ + toSatisfyAll(predicate: (n: any) => boolean): void, + /** + * Use `.toBeBoolean` when checking if a value is a `Boolean`. + */ + toBeBoolean(): void, + /** + * Use `.toBeTrue` when checking a value is equal (===) to `true`. + */ + toBeTrue(): void, + /** + * Use `.toBeFalse` when checking a value is equal (===) to `false`. + */ + toBeFalse(): void, + /** + * Use .toBeDate when checking if a value is a Date. + */ + toBeDate(): void, + /** + * Use `.toBeFunction` when checking if a value is a `Function`. + */ + toBeFunction(): void, + /** + * Use `.toHaveBeenCalledBefore` when checking if a `Mock` was called before another `Mock`. + * + * Note: Required Jest version >22 + * Note: Your mock functions will have to be asynchronous to cause the timestamps inside of Jest to occur in a differentJS event loop, otherwise the mock timestamps will all be the same + * + * @param {Mock} mock + */ + toHaveBeenCalledBefore(mock: JestMockFn): void, + /** + * Use `.toBeNumber` when checking if a value is a `Number`. + */ + toBeNumber(): void, + /** + * Use `.toBeNaN` when checking a value is `NaN`. + */ + toBeNaN(): void, + /** + * Use `.toBeFinite` when checking if a value is a `Number`, not `NaN` or `Infinity`. + */ + toBeFinite(): void, + /** + * Use `.toBePositive` when checking if a value is a positive `Number`. + */ + toBePositive(): void, + /** + * Use `.toBeNegative` when checking if a value is a negative `Number`. + */ + toBeNegative(): void, + /** + * Use `.toBeEven` when checking if a value is an even `Number`. + */ + toBeEven(): void, + /** + * Use `.toBeOdd` when checking if a value is an odd `Number`. + */ + toBeOdd(): void, + /** + * Use `.toBeWithin` when checking if a number is in between the given bounds of: start (inclusive) and end (exclusive). + * + * @param {Number} start + * @param {Number} end + */ + toBeWithin(start: number, end: number): void, + /** + * Use `.toBeObject` when checking if a value is an `Object`. + */ + toBeObject(): void, + /** + * Use `.toContainKey` when checking if an object contains the provided key. + * + * @param {String} key + */ + toContainKey(key: string): void, + /** + * Use `.toContainKeys` when checking if an object has all of the provided keys. + * + * @param {Array.} keys + */ + toContainKeys(keys: string[]): void, + /** + * Use `.toContainAllKeys` when checking if an object only contains all of the provided keys. + * + * @param {Array.} keys + */ + toContainAllKeys(keys: string[]): void, + /** + * Use `.toContainAnyKeys` when checking if an object contains at least one of the provided keys. + * + * @param {Array.} keys + */ + toContainAnyKeys(keys: string[]): void, + /** + * Use `.toContainValue` when checking if an object contains the provided value. + * + * @param {*} value + */ + toContainValue(value: any): void, + /** + * Use `.toContainValues` when checking if an object contains all of the provided values. + * + * @param {Array.<*>} values + */ + toContainValues(values: any[]): void, + /** + * Use `.toContainAllValues` when checking if an object only contains all of the provided values. + * + * @param {Array.<*>} values + */ + toContainAllValues(values: any[]): void, + /** + * Use `.toContainAnyValues` when checking if an object contains at least one of the provided values. + * + * @param {Array.<*>} values + */ + toContainAnyValues(values: any[]): void, + /** + * Use `.toContainEntry` when checking if an object contains the provided entry. + * + * @param {Array.} entry + */ + toContainEntry(entry: [string, string]): void, + /** + * Use `.toContainEntries` when checking if an object contains all of the provided entries. + * + * @param {Array.>} entries + */ + toContainEntries(entries: [string, string][]): void, + /** + * Use `.toContainAllEntries` when checking if an object only contains all of the provided entries. + * + * @param {Array.>} entries + */ + toContainAllEntries(entries: [string, string][]): void, + /** + * Use `.toContainAnyEntries` when checking if an object contains at least one of the provided entries. + * + * @param {Array.>} entries + */ + toContainAnyEntries(entries: [string, string][]): void, + /** + * Use `.toBeExtensible` when checking if an object is extensible. + */ + toBeExtensible(): void, + /** + * Use `.toBeFrozen` when checking if an object is frozen. + */ + toBeFrozen(): void, + /** + * Use `.toBeSealed` when checking if an object is sealed. + */ + toBeSealed(): void, + /** + * Use `.toBeString` when checking if a value is a `String`. + */ + toBeString(): void, + /** + * Use `.toEqualCaseInsensitive` when checking if a string is equal (===) to another ignoring the casing of both strings. + * + * @param {String} string + */ + toEqualCaseInsensitive(string: string): void, + /** + * Use `.toStartWith` when checking if a `String` starts with a given `String` prefix. + * + * @param {String} prefix + */ + toStartWith(prefix: string): void, + /** + * Use `.toEndWith` when checking if a `String` ends with a given `String` suffix. + * + * @param {String} suffix + */ + toEndWith(suffix: string): void, + /** + * Use `.toInclude` when checking if a `String` includes the given `String` substring. + * + * @param {String} substring + */ + toInclude(substring: string): void, + /** + * Use `.toIncludeRepeated` when checking if a `String` includes the given `String` substring the correct number of times. + * + * @param {String} substring + * @param {Number} times + */ + toIncludeRepeated(substring: string, times: number): void, + /** + * Use `.toIncludeMultiple` when checking if a `String` includes all of the given substrings. + * + * @param {Array.} substring + */ + toIncludeMultiple(substring: string[]): void, + ... +}; + +interface JestExpectType { + not: JestExpectType & + EnzymeMatchersType & + DomTestingLibraryType & + JestJQueryMatchersType & + JestStyledComponentsMatchersType & + JestExtendedMatchersType; + /** + * If you have a mock function, you can use .lastCalledWith to test what + * arguments it was last called with. + */ + lastCalledWith(...args: Array): void; + /** + * toBe just checks that a value is what you expect. It uses === to check + * strict equality. + */ + toBe(value: any): void; + /** + * Use .toBeCalledWith to ensure that a mock function was called with + * specific arguments. + */ + toBeCalledWith(...args: Array): void; + /** + * Using exact equality with floating point numbers is a bad idea. Rounding + * means that intuitive things fail. + */ + toBeCloseTo(num: number, delta: any): void; + /** + * Use .toBeDefined to check that a variable is not undefined. + */ + toBeDefined(): void; + /** + * Use .toBeFalsy when you don't care what a value is, you just want to + * ensure a value is false in a boolean context. + */ + toBeFalsy(): void; + /** + * To compare floating point numbers, you can use toBeGreaterThan. + */ + toBeGreaterThan(number: number): void; + /** + * To compare floating point numbers, you can use toBeGreaterThanOrEqual. + */ + toBeGreaterThanOrEqual(number: number): void; + /** + * To compare floating point numbers, you can use toBeLessThan. + */ + toBeLessThan(number: number): void; + /** + * To compare floating point numbers, you can use toBeLessThanOrEqual. + */ + toBeLessThanOrEqual(number: number): void; + /** + * Use .toBeInstanceOf(Class) to check that an object is an instance of a + * class. + */ + toBeInstanceOf(cls: Class<*>): void; + /** + * .toBeNull() is the same as .toBe(null) but the error messages are a bit + * nicer. + */ + toBeNull(): void; + /** + * Use .toBeTruthy when you don't care what a value is, you just want to + * ensure a value is true in a boolean context. + */ + toBeTruthy(): void; + /** + * Use .toBeUndefined to check that a variable is undefined. + */ + toBeUndefined(): void; + /** + * Use .toContain when you want to check that an item is in a list. For + * testing the items in the list, this uses ===, a strict equality check. + */ + toContain(item: any): void; + /** + * Use .toContainEqual when you want to check that an item is in a list. For + * testing the items in the list, this matcher recursively checks the + * equality of all fields, rather than checking for object identity. + */ + toContainEqual(item: any): void; + /** + * Use .toEqual when you want to check that two objects have the same value. + * This matcher recursively checks the equality of all fields, rather than + * checking for object identity. + */ + toEqual(value: any): void; + /** + * Use .toHaveBeenCalled to ensure that a mock function got called. + */ + toHaveBeenCalled(): void; + toBeCalled(): void; + /** + * Use .toHaveBeenCalledTimes to ensure that a mock function got called exact + * number of times. + */ + toHaveBeenCalledTimes(number: number): void; + toBeCalledTimes(number: number): void; + /** + * + */ + toHaveBeenNthCalledWith(nthCall: number, ...args: Array): void; + nthCalledWith(nthCall: number, ...args: Array): void; + /** + * + */ + toHaveReturned(): void; + toReturn(): void; + /** + * + */ + toHaveReturnedTimes(number: number): void; + toReturnTimes(number: number): void; + /** + * + */ + toHaveReturnedWith(value: any): void; + toReturnWith(value: any): void; + /** + * + */ + toHaveLastReturnedWith(value: any): void; + lastReturnedWith(value: any): void; + /** + * + */ + toHaveNthReturnedWith(nthCall: number, value: any): void; + nthReturnedWith(nthCall: number, value: any): void; + /** + * Use .toHaveBeenCalledWith to ensure that a mock function was called with + * specific arguments. + */ + toHaveBeenCalledWith(...args: Array): void; + toBeCalledWith(...args: Array): void; + /** + * Use .toHaveBeenLastCalledWith to ensure that a mock function was last called + * with specific arguments. + */ + toHaveBeenLastCalledWith(...args: Array): void; + lastCalledWith(...args: Array): void; + /** + * Check that an object has a .length property and it is set to a certain + * numeric value. + */ + toHaveLength(number: number): void; + /** + * + */ + toHaveProperty(propPath: string | $ReadOnlyArray, value?: any): void; + /** + * Use .toMatch to check that a string matches a regular expression or string. + */ + toMatch(regexpOrString: RegExp | string): void; + /** + * Use .toMatchObject to check that a javascript object matches a subset of the properties of an object. + */ + toMatchObject(object: Object | Array): void; + /** + * Use .toStrictEqual to check that a javascript object matches a subset of the properties of an object. + */ + toStrictEqual(value: any): void; + /** + * This ensures that an Object matches the most recent snapshot. + */ + toMatchSnapshot(propertyMatchers?: any, name?: string): void; + /** + * This ensures that an Object matches the most recent snapshot. + */ + toMatchSnapshot(name: string): void; + + toMatchInlineSnapshot(snapshot?: string): void; + toMatchInlineSnapshot(propertyMatchers?: any, snapshot?: string): void; + /** + * Use .toThrow to test that a function throws when it is called. + * If you want to test that a specific error gets thrown, you can provide an + * argument to toThrow. The argument can be a string for the error message, + * a class for the error, or a regex that should match the error. + * + * Alias: .toThrowError + */ + toThrow(message?: string | Error | Class | RegExp): void; + toThrowError(message?: string | Error | Class | RegExp): void; + /** + * Use .toThrowErrorMatchingSnapshot to test that a function throws a error + * matching the most recent snapshot when it is called. + */ + toThrowErrorMatchingSnapshot(): void; + toThrowErrorMatchingInlineSnapshot(snapshot?: string): void; +} + +type JestObjectType = { + /** + * Disables automatic mocking in the module loader. + * + * After this method is called, all `require()`s will return the real + * versions of each module (rather than a mocked version). + */ + disableAutomock(): JestObjectType, + /** + * An un-hoisted version of disableAutomock + */ + autoMockOff(): JestObjectType, + /** + * Enables automatic mocking in the module loader. + */ + enableAutomock(): JestObjectType, + /** + * An un-hoisted version of enableAutomock + */ + autoMockOn(): JestObjectType, + /** + * Clears the mock.calls and mock.instances properties of all mocks. + * Equivalent to calling .mockClear() on every mocked function. + */ + clearAllMocks(): JestObjectType, + /** + * Resets the state of all mocks. Equivalent to calling .mockReset() on every + * mocked function. + */ + resetAllMocks(): JestObjectType, + /** + * Restores all mocks back to their original value. + */ + restoreAllMocks(): JestObjectType, + /** + * Removes any pending timers from the timer system. + */ + clearAllTimers(): void, + /** + * Returns the number of fake timers still left to run. + */ + getTimerCount(): number, + /** + * The same as `mock` but not moved to the top of the expectation by + * babel-jest. + */ + doMock(moduleName: string, moduleFactory?: any): JestObjectType, + /** + * The same as `unmock` but not moved to the top of the expectation by + * babel-jest. + */ + dontMock(moduleName: string): JestObjectType, + /** + * Returns a new, unused mock function. Optionally takes a mock + * implementation. + */ + fn, TReturn>( + implementation?: (...args: TArguments) => TReturn + ): JestMockFn, + /** + * Determines if the given function is a mocked function. + */ + isMockFunction(fn: Function): boolean, + /** + * Given the name of a module, use the automatic mocking system to generate a + * mocked version of the module for you. + */ + genMockFromModule(moduleName: string): any, + /** + * Mocks a module with an auto-mocked version when it is being required. + * + * The second argument can be used to specify an explicit module factory that + * is being run instead of using Jest's automocking feature. + * + * The third argument can be used to create virtual mocks -- mocks of modules + * that don't exist anywhere in the system. + */ + mock( + moduleName: string, + moduleFactory?: any, + options?: Object + ): JestObjectType, + /** + * Returns the actual module instead of a mock, bypassing all checks on + * whether the module should receive a mock implementation or not. + */ + requireActual(moduleName: string): any, + /** + * Returns a mock module instead of the actual module, bypassing all checks + * on whether the module should be required normally or not. + */ + requireMock(moduleName: string): any, + /** + * Resets the module registry - the cache of all required modules. This is + * useful to isolate modules where local state might conflict between tests. + */ + resetModules(): JestObjectType, + /** + * Creates a sandbox registry for the modules that are loaded inside the + * callback function. This is useful to isolate specific modules for every + * test so that local module state doesn't conflict between tests. + */ + isolateModules(fn: () => void): JestObjectType, + /** + * Exhausts the micro-task queue (usually interfaced in node via + * process.nextTick). + */ + runAllTicks(): void, + /** + * Exhausts the macro-task queue (i.e., all tasks queued by setTimeout(), + * setInterval(), and setImmediate()). + */ + runAllTimers(): void, + /** + * Exhausts all tasks queued by setImmediate(). + */ + runAllImmediates(): void, + /** + * Executes only the macro task queue (i.e. all tasks queued by setTimeout() + * or setInterval() and setImmediate()). + */ + advanceTimersByTime(msToRun: number): void, + /** + * Executes only the macro task queue (i.e. all tasks queued by setTimeout() + * or setInterval() and setImmediate()). + * + * Renamed to `advanceTimersByTime`. + */ + runTimersToTime(msToRun: number): void, + /** + * Executes only the macro-tasks that are currently pending (i.e., only the + * tasks that have been queued by setTimeout() or setInterval() up to this + * point) + */ + runOnlyPendingTimers(): void, + /** + * Explicitly supplies the mock object that the module system should return + * for the specified module. Note: It is recommended to use jest.mock() + * instead. + */ + setMock(moduleName: string, moduleExports: any): JestObjectType, + /** + * Indicates that the module system should never return a mocked version of + * the specified module from require() (e.g. that it should always return the + * real module). + */ + unmock(moduleName: string): JestObjectType, + /** + * Instructs Jest to use fake versions of the standard timer functions + * (setTimeout, setInterval, clearTimeout, clearInterval, nextTick, + * setImmediate and clearImmediate). + */ + useFakeTimers(): JestObjectType, + /** + * Instructs Jest to use the real versions of the standard timer functions. + */ + useRealTimers(): JestObjectType, + /** + * Creates a mock function similar to jest.fn but also tracks calls to + * object[methodName]. + */ + spyOn( + object: Object, + methodName: string, + accessType?: 'get' | 'set' + ): JestMockFn, + /** + * Set the default timeout interval for tests and before/after hooks in milliseconds. + * Note: The default timeout interval is 5 seconds if this method is not called. + */ + setTimeout(timeout: number): JestObjectType, + ... +}; + +type JestSpyType = { calls: JestCallsType, ... }; + +type JestDoneFn = {| + (): void, + fail: (error: Error) => void, +|}; + +/** Runs this function after every test inside this context */ +declare function afterEach( + fn: (done: JestDoneFn) => ?Promise, + timeout?: number +): void; +/** Runs this function before every test inside this context */ +declare function beforeEach( + fn: (done: JestDoneFn) => ?Promise, + timeout?: number +): void; +/** Runs this function after all tests have finished inside this context */ +declare function afterAll( + fn: (done: JestDoneFn) => ?Promise, + timeout?: number +): void; +/** Runs this function before any tests have started inside this context */ +declare function beforeAll( + fn: (done: JestDoneFn) => ?Promise, + timeout?: number +): void; + +/** A context for grouping tests together */ +declare var describe: { + /** + * Creates a block that groups together several related tests in one "test suite" + */ + (name: JestTestName, fn: () => void): void, + /** + * Only run this describe block + */ + only(name: JestTestName, fn: () => void): void, + /** + * Skip running this describe block + */ + skip(name: JestTestName, fn: () => void): void, + /** + * each runs this test against array of argument arrays per each run + * + * @param {table} table of Test + */ + each( + ...table: Array | mixed> | [Array, string] + ): ( + name: JestTestName, + fn?: (...args: Array) => ?Promise, + timeout?: number + ) => void, + ... +}; + +/** An individual test unit */ +declare var it: { + /** + * An individual test unit + * + * @param {JestTestName} Name of Test + * @param {Function} Test + * @param {number} Timeout for the test, in milliseconds. + */ + ( + name: JestTestName, + fn?: (done: JestDoneFn) => ?Promise, + timeout?: number + ): void, + /** + * Only run this test + * + * @param {JestTestName} Name of Test + * @param {Function} Test + * @param {number} Timeout for the test, in milliseconds. + */ + only: {| + ( + name: JestTestName, + fn?: (done: JestDoneFn) => ?Promise, + timeout?: number + ): void, + each( + ...table: Array | mixed> | [Array, string] + ): ( + name: JestTestName, + fn?: (...args: Array) => ?Promise, + timeout?: number + ) => void + |}, + /** + * Skip running this test + * + * @param {JestTestName} Name of Test + * @param {Function} Test + * @param {number} Timeout for the test, in milliseconds. + */ + skip( + name: JestTestName, + fn?: (done: JestDoneFn) => ?Promise, + timeout?: number + ): void, + /** + * Highlight planned tests in the summary output + * + * @param {String} Name of Test to do + */ + todo(name: string): void, + /** + * Run the test concurrently + * + * @param {JestTestName} Name of Test + * @param {Function} Test + * @param {number} Timeout for the test, in milliseconds. + */ + concurrent( + name: JestTestName, + fn?: (done: JestDoneFn) => ?Promise, + timeout?: number + ): void, + /** + * each runs this test against array of argument arrays per each run + * + * @param {table} table of Test + */ + each( + ...table: Array | mixed> | [Array, string] + ): ( + name: JestTestName, + fn?: (...args: Array) => ?Promise, + timeout?: number + ) => void, + ... +}; + +declare function fit( + name: JestTestName, + fn: (done: JestDoneFn) => ?Promise, + timeout?: number +): void; +/** An individual test unit */ +declare var test: typeof it; +/** A disabled group of tests */ +declare var xdescribe: typeof describe; +/** A focused group of tests */ +declare var fdescribe: typeof describe; +/** A disabled individual test */ +declare var xit: typeof it; +/** A disabled individual test */ +declare var xtest: typeof it; + +type JestPrettyFormatColors = { + comment: { + close: string, + open: string, + ... + }, + content: { + close: string, + open: string, + ... + }, + prop: { + close: string, + open: string, + ... + }, + tag: { + close: string, + open: string, + ... + }, + value: { + close: string, + open: string, + ... + }, + ... +}; + +type JestPrettyFormatIndent = string => string; +type JestPrettyFormatRefs = Array; +type JestPrettyFormatPrint = any => string; +type JestPrettyFormatStringOrNull = string | null; + +type JestPrettyFormatOptions = {| + callToJSON: boolean, + edgeSpacing: string, + escapeRegex: boolean, + highlight: boolean, + indent: number, + maxDepth: number, + min: boolean, + plugins: JestPrettyFormatPlugins, + printFunctionName: boolean, + spacing: string, + theme: {| + comment: string, + content: string, + prop: string, + tag: string, + value: string, + |}, +|}; + +type JestPrettyFormatPlugin = { + print: ( + val: any, + serialize: JestPrettyFormatPrint, + indent: JestPrettyFormatIndent, + opts: JestPrettyFormatOptions, + colors: JestPrettyFormatColors + ) => string, + test: any => boolean, + ... +}; + +type JestPrettyFormatPlugins = Array; + +/** The expect function is used every time you want to test a value */ +declare var expect: { + /** The object that you want to make assertions against */ + ( + value: any + ): JestExpectType & + JestPromiseType & + EnzymeMatchersType & + DomTestingLibraryType & + JestJQueryMatchersType & + JestStyledComponentsMatchersType & + JestExtendedMatchersType, + /** Add additional Jasmine matchers to Jest's roster */ + extend(matchers: { [name: string]: JestMatcher, ... }): void, + /** Add a module that formats application-specific data structures. */ + addSnapshotSerializer(pluginModule: JestPrettyFormatPlugin): void, + assertions(expectedAssertions: number): void, + hasAssertions(): void, + any(value: mixed): JestAsymmetricEqualityType, + anything(): any, + arrayContaining(value: Array): Array, + objectContaining(value: Object): Object, + /** Matches any received string that contains the exact expected string. */ + stringContaining(value: string): string, + stringMatching(value: string | RegExp): string, + not: { + arrayContaining: (value: $ReadOnlyArray) => Array, + objectContaining: (value: {...}) => Object, + stringContaining: (value: string) => string, + stringMatching: (value: string | RegExp) => string, + ... + }, + ... +}; + +// TODO handle return type +// http://jasmine.github.io/2.4/introduction.html#section-Spies +declare function spyOn(value: mixed, method: string): Object; + +/** Holds all functions related to manipulating test runner */ +declare var jest: JestObjectType; + +/** + * The global Jasmine object, this is generally not exposed as the public API, + * using features inside here could break in later versions of Jest. + */ +declare var jasmine: { + DEFAULT_TIMEOUT_INTERVAL: number, + any(value: mixed): JestAsymmetricEqualityType, + anything(): any, + arrayContaining(value: Array): Array, + clock(): JestClockType, + createSpy(name: string): JestSpyType, + createSpyObj( + baseName: string, + methodNames: Array + ): { [methodName: string]: JestSpyType, ... }, + objectContaining(value: Object): Object, + stringMatching(value: string): string, + ... +}; diff --git a/lib/ResponsiveReactGridLayout.jsx b/lib/ResponsiveReactGridLayout.jsx index 9736bf0c4..d5450df40 100644 --- a/lib/ResponsiveReactGridLayout.jsx +++ b/lib/ResponsiveReactGridLayout.jsx @@ -7,15 +7,17 @@ import { cloneLayout, synchronizeLayoutWithChildren, validateLayout, - noop + noop, + type Layout } from "./utils"; import { getBreakpointFromWidth, getColsFromBreakpoint, - findOrGenerateResponsiveLayout + findOrGenerateResponsiveLayout, + type ResponsiveLayout, + type Breakpoints, } from "./responsiveUtils"; import ReactGridLayout from "./ReactGridLayout"; -import type { Layout } from "./utils"; const type = obj => Object.prototype.toString.call(obj); @@ -46,9 +48,9 @@ type Props = {| // Responsive config breakpoint?: ?Breakpoint, - breakpoints: { [key: Breakpoint]: number }, + breakpoints: Breakpoints, cols: { [key: Breakpoint]: number }, - layouts: { [key: Breakpoint]: Layout }, + layouts: ResponsiveLayout, width: number, margin: { [key: Breakpoint]: [number, number] } | [number, number], containerPadding: { [key: Breakpoint]: [number, number] } | [number, number], diff --git a/lib/responsiveUtils.js b/lib/responsiveUtils.js index 6a710767b..f8e225273 100644 --- a/lib/responsiveUtils.js +++ b/lib/responsiveUtils.js @@ -4,22 +4,15 @@ import { cloneLayout, compact, correctBounds } from "./utils"; import type { CompactType, Layout } from "./utils"; -export type ResponsiveLayout = { - lg?: Layout, - md?: Layout, - sm?: Layout, - xs?: Layout, - xxs?: Layout -}; - -type Breakpoint = string; +export type Breakpoint = string; +export type DefaultBreakpoints = 'lg' | 'md' | 'sm' | 'xs' | 'xxs'; -type Breakpoints = { - lg?: number, - md?: number, - sm?: number, - xs?: number, - xxs?: number +// + indicates read-only +export type ResponsiveLayout = { + +[breakpoint: T]: Layout +}; +export type Breakpoints = { + +[breakpoint: T]: number }; /** @@ -30,7 +23,7 @@ type Breakpoints = { * @return {String} Highest breakpoint that is less than width. */ export function getBreakpointFromWidth( - breakpoints: Breakpoints, + breakpoints: Breakpoints, width: number ): Breakpoint { const sorted = sortBreakpoints(breakpoints); @@ -50,7 +43,7 @@ export function getBreakpointFromWidth( */ export function getColsFromBreakpoint( breakpoint: Breakpoint, - cols: Breakpoints + cols: Breakpoints ): number { if (!cols[breakpoint]) { throw new Error( @@ -77,8 +70,8 @@ export function getColsFromBreakpoint( * @return {Array} New layout. */ export function findOrGenerateResponsiveLayout( - layouts: ResponsiveLayout, - breakpoints: Breakpoints, + layouts: ResponsiveLayout, + breakpoints: Breakpoints, breakpoint: Breakpoint, lastBreakpoint: Breakpoint, cols: number, @@ -110,7 +103,7 @@ export function findOrGenerateResponsiveLayout( * @param {Object} breakpoints Key/value pair of breakpoint names to widths. * @return {Array} Sorted breakpoints. */ -export function sortBreakpoints(breakpoints: Breakpoints): Array { +export function sortBreakpoints(breakpoints: Breakpoints): Array { const keys: Array = Object.keys(breakpoints); return keys.sort(function(a, b) { return breakpoints[a] - breakpoints[b]; diff --git a/lib/utils.js b/lib/utils.js index e60d51a67..3aaba519c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -20,7 +20,7 @@ export type LayoutItem = { isDraggable?: ?boolean, isResizable?: ?boolean }; -export type Layout = Array; +export type Layout = $ReadOnlyArray; export type Position = { left: number, top: number, @@ -165,6 +165,8 @@ export function collides(l1: LayoutItem, l2: LayoutItem): boolean { * Given a layout, compact it. This involves going down each y coordinate and removing gaps * between items. * + * Does not modify layout items (clones). Creates a new layout array. + * * @param {Array} layout Layout. * @param {Boolean} verticalCompact Whether or not to compact the layout * vertically. @@ -247,6 +249,9 @@ function resolveCompactionCollision( /** * Compact an item in the layout. + * + * Modifies item. + * */ export function compactItem( compareWith: Layout, @@ -294,6 +299,8 @@ export function compactItem( /** * Given a layout, make sure all elements fit within its bounds. * + * Modifies layout items. + * * @param {Array} layout Layout array. * @param {Number} bounds Number of columns. */ @@ -372,6 +379,8 @@ export function getStatics(layout: Layout): Array { /** * Move an element. Responsible for doing cascading movements of other elements. * + * Modifies layout items. + * * @param {Array} layout Full layout to modify. * @param {LayoutItem} l element to move. * @param {Number} [x] X position in grid units. @@ -416,6 +425,7 @@ export function moveElement( : compactType === "horizontal" && typeof x === "number" ? oldX >= x : false; + // $FlowIgnore acceptable modification of read-only array as it was recently cloned if (movingUp) sorted = sorted.reverse(); const collisions = getAllCollisions(sorted, l); @@ -579,8 +589,14 @@ export function sortLayoutItems( else return sortLayoutItemsByRowCol(layout); } +/** + * Sort layout items by row ascending and column ascending. + * + * Does not modify Layout. + */ export function sortLayoutItemsByRowCol(layout: Layout): Layout { - return [].concat(layout).sort(function(a, b) { + // Slice to clone array as sort modifies + return layout.slice(0).sort(function(a, b) { if (a.y > b.y || (a.y === b.y && a.x > b.x)) { return 1; } else if (a.y === b.y && a.x === b.x) { @@ -591,8 +607,13 @@ export function sortLayoutItemsByRowCol(layout: Layout): Layout { }); } +/** + * Sort layout items by column ascending then row ascending. + * + * Does not modify Layout. + */ export function sortLayoutItemsByColRow(layout: Layout): Layout { - return [].concat(layout).sort(function(a, b) { + return layout.slice(0).sort(function(a, b) { if (a.x > b.x || (a.x === b.x && a.y > b.y)) { return 1; } @@ -604,6 +625,8 @@ export function sortLayoutItemsByColRow(layout: Layout): Layout { * Generate a layout using the initialLayout and children as a template. * Missing entries will be added, extraneous ones will be truncated. * + * Does not modify initialLayout. + * * @param {Array} initialLayout Layout passed in through props. * @param {String} breakpoint Current responsive breakpoint. * @param {?String} compact Compaction option. @@ -618,7 +641,7 @@ export function synchronizeLayoutWithChildren( initialLayout = initialLayout || []; // Generate one layout item per child. - let layout: Layout = []; + const layout: LayoutItem[] = []; React.Children.forEach(children, (child: ReactElement, i: number) => { // Don't overwrite if it already exists. const exists = getLayoutItem(initialLayout, String(child.key)); @@ -653,10 +676,8 @@ export function synchronizeLayoutWithChildren( }); // Correct the layout. - layout = correctBounds(layout, { cols: cols }); - layout = compact(layout, compactType, cols); - - return layout; + const correctedLayout = correctBounds(layout, { cols: cols }); + return compact(correctedLayout, compactType, cols); } /** diff --git a/package.json b/package.json index 949e21e89..cf099ffff 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,9 @@ "babel-plugin-preval": "^4.0.0", "css-loader": "^3.4.2", "ejs": "^3.0.1", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.2", + "enzyme-to-json": "^3.4.4", "eslint": "^6.8.0", "eslint-plugin-flowtype": "^4.6.0", "eslint-plugin-mocha": "^6.2.2", @@ -64,7 +67,7 @@ "flow-bin": "^0.119.0", "husky": "^3.0.9", "imports-loader": "^0.8.0", - "jest-cli": "^24.9.0", + "jest": "^24.9.0", "lint-staged": "^9.5.0", "lodash": "^4.17.5", "opener": "^1.4.3", @@ -74,6 +77,7 @@ "react-hot-loader": "^4.12.18", "react-transform-hmr": "^1.0.2", "style-loader": "^1.1.2", + "timsort": "^0.3.0", "webpack": "^4.41.5", "webpack-cli": "^3.3.10", "webpack-dev-server": "^3.10.1" @@ -82,6 +86,12 @@ "registry": "https://registry.npmjs.org" }, "jest": { + "setupFilesAfterEnv": [ + "test/util/setupTests.js" + ], + "snapshotSerializers": [ + "enzyme-to-json/serializer" + ], "testMatch": [ "/test/spec/*.js" ], @@ -98,4 +108,4 @@ "pre-commit": "lint-staged && make lint && make test" } } -} \ No newline at end of file +} diff --git a/test/examples/0-showcase.jsx b/test/examples/0-showcase.jsx index 8b295eb74..caddcd84d 100644 --- a/test/examples/0-showcase.jsx +++ b/test/examples/0-showcase.jsx @@ -9,7 +9,6 @@ const ResponsiveReactGridLayout = WidthProvider(Responsive); type Props = {| className: string, cols: {[string]: number}, - initialLayout: Layout, onLayoutChange: Function, rowHeight: number, |}; @@ -26,14 +25,13 @@ export default class ShowcaseLayout extends React.Component { rowHeight: 30, onLayoutChange: function() {}, cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, - initialLayout: generateLayout() }; state = { currentBreakpoint: "lg", compactType: "vertical", mounted: false, - layouts: { lg: this.props.initialLayout } + layouts: { lg: generateLayout() } }; componentDidMount() { @@ -92,7 +90,6 @@ export default class ShowcaseLayout extends React.Component { render() { // eslint-disable-next-line no-unused-vars - const {initialLayout, ...props} = this.props; return (
    @@ -108,7 +105,7 @@ export default class ShowcaseLayout extends React.Component { Change Compaction Type Basic Render 1`] = ` + + + +
    + + + +
    + + 0 + + + + +
    +
    +
    +
    + + + +
    + + 1 + + + + +
    +
    +
    +
    + + + +
    + + 2 + + + + +
    +
    +
    +
    + + + +
    + + 3 + + + + +
    +
    +
    +
    + + + +
    + + 4 + + + + +
    +
    +
    +
    + + + +
    + + 5 + + + + +
    +
    +
    +
    + + + +
    + + 6 + + + + +
    +
    +
    +
    + + + +
    + + 7 + + + + +
    +
    +
    +
    + + + +
    + + 8 + + + + +
    +
    +
    +
    + + + +
    + + 9 + + + + +
    +
    +
    +
    + + + +
    + + 10 + + + + +
    +
    +
    +
    + + + +
    + + 11 + + + + +
    +
    +
    +
    + + + +
    + + 12 + + + + +
    +
    +
    +
    + + + +
    + + 13 + + + + +
    +
    +
    +
    + + + +
    + + 14 + + + + +
    +
    +
    +
    + + + +
    + + 15 + + + + +
    +
    +
    +
    + + + +
    + + 16 + + + + +
    +
    +
    +
    + + + +
    + + 17 + + + + +
    +
    +
    +
    + + + +
    + + 18 + + + + +
    +
    +
    +
    + + + +
    + + 19 + + + + +
    +
    +
    +
    +
    +
    +
    +
    +`; + +exports[`Lifecycle tests Basic Render 1`] = ` + +
    +
    + Current Breakpoint: + xxs + ( + 2 + columns) +
    +
    + Compaction type: + + Vertical +
    + + + + + +
    + + + +
    + + 0 + + + + +
    +
    +
    +
    + + + +
    + + 1 + + + + +
    +
    +
    +
    + + + +
    + + 2 + + + + +
    +
    +
    +
    + + + +
    + + 3 + + + + +
    +
    +
    +
    + + + +
    + + 4 + + + + +
    +
    +
    +
    + + + +
    + + 5 + + + + +
    +
    +
    +
    + + + +
    + + 6 + + + + +
    +
    +
    +
    + + + +
    + + 7 + + + + +
    +
    +
    +
    + + + +
    + + 8 + + + + +
    +
    +
    +
    + + + +
    + + 9 + + + + +
    +
    +
    +
    + + + +
    + + Static - + 10 + + + + +
    +
    +
    +
    + + + +
    + + 11 + + + + +
    +
    +
    +
    + + + +
    + + 12 + + + + +
    +
    +
    +
    + + + +
    + + 13 + + + + +
    +
    +
    +
    + + + +
    + + 14 + + + + +
    +
    +
    +
    + + + +
    + + 15 + + + + +
    +
    +
    +
    + + + +
    + + 16 + + + + +
    +
    +
    +
    + + + +
    + + 17 + + + + +
    +
    +
    +
    + + + +
    + + 18 + + + + +
    +
    +
    +
    + + + +
    + + 19 + + + + +
    +
    +
    +
    + + + +
    + + 20 + + + + +
    +
    +
    +
    + + + +
    + + Static - + 21 + + + + +
    +
    +
    +
    + + + +
    + + 22 + + + + +
    +
    +
    +
    + + + +
    + + 23 + + + + +
    +
    +
    +
    + + + +
    + + 24 + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +`; diff --git a/test/spec/lifecycle-test.js b/test/spec/lifecycle-test.js new file mode 100644 index 000000000..b422dee86 --- /dev/null +++ b/test/spec/lifecycle-test.js @@ -0,0 +1,75 @@ +// @flow +/* eslint-env jest */ + +import React from 'react'; +import _ from 'lodash'; +import ResponsiveReactGridLayout from '../../lib/ResponsiveReactGridLayout'; +import ReactGridLayout from '../../lib/ReactGridLayout'; +import BasicLayout from '../examples/1-basic'; +import ShowcaseLayout from '../examples/0-showcase'; +import deepFreeze from '../util/deepFreeze'; +import {shallow, mount} from 'enzyme'; + +describe('Lifecycle tests', function() { + + // Example layouts use randomness + let randIdx = 0; + beforeAll(() => { + const randArr = [0.001, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.999]; + jest.spyOn(global.Math, 'random').mockImplementation(() => { + randIdx = (randIdx + 1) % randArr.length; + return randArr[randIdx]; + }); + }); + + beforeEach(() => { + randIdx = 0; + }); + + afterAll(() => { + global.Math.random.mockRestore(); + }); + + describe('', function() { + it('Basic Render', async function() { + const wrapper = mount(); + expect(wrapper).toMatchSnapshot(); + }); + }); + + describe('', function() { + + it('Basic Render', async function() { + const wrapper = mount(); + expect(wrapper).toMatchSnapshot(); + }); + + it('Does not modify layout on movement', async function() { + const layouts = { + lg: [ + ..._.times(3, (i) => ({ + i: String(i), + x: i, + y: 0, + w: 1, + h: 1, + })) + ] + }; + const frozenLayouts = deepFreeze(layouts, {set: true, get: false /* don't crash on unknown gets */}); + // Render the basic Responsive layout. + const wrapper = mount( + + {_.times(3, (i) =>
    )} + + ); + + // Set that layout as state and ensure it doesn't change. + wrapper.setState({layouts: frozenLayouts}); + wrapper.setProps({width: 800, breakpoint: 'md'}); // will generate new layout + wrapper.render(); + + expect(frozenLayouts).not.toContain('md'); + }); + }); +}); \ No newline at end of file diff --git a/test/spec/utils-test.js b/test/spec/utils-test.js index ebba24047..8ba6792c3 100644 --- a/test/spec/utils-test.js +++ b/test/spec/utils-test.js @@ -9,20 +9,13 @@ import { moveElement, sortLayoutItemsByRowCol, validateLayout -} from "../../lib/utils.js"; +} from "../../lib/utils"; import { calcGridColWidth, calcGridItemPosition -} from "../../lib/calculateUtils.js"; +} from "../../lib/calculateUtils"; import isEqual from "lodash.isequal"; -/*:: import type { Layout } from "../../lib/utils.js"; */ - -/*:: declare function describe(name: string, fn: Function): void; */ -/*:: declare function it(name: string, fn: Function): void; */ -/*:: declare var expect: { - (any): any, - objectContaining(params: any): any -}; */ + describe("bottom", () => { it("Handles an empty layout as input", () => { diff --git a/test/test-hook.jsx b/test/test-hook.jsx index c7bbe3057..e5c7b1414 100644 --- a/test/test-hook.jsx +++ b/test/test-hook.jsx @@ -5,7 +5,9 @@ import "style-loader!css-loader!../examples/example-styles.css"; typeof window !== "undefined" && (window.React = React); // for devtools export default function makeLayout(Layout) { - class ExampleLayout extends React.Component { + // Basic layout that mirrors the internals of its child layout by listening to `onLayoutChange`. + // It does not pass any other props to the Layout. + class ListeningLayout extends React.Component { state = { layout: [] }; onLayoutChange = layout => { @@ -40,7 +42,7 @@ export default function makeLayout(Layout) { function run() { const contentDiv = document.getElementById("content"); const gridProps = window.gridProps || {}; - ReactDOM.render(React.createElement(ExampleLayout, gridProps), contentDiv); + ReactDOM.render(React.createElement(ListeningLayout, gridProps), contentDiv); } if (!document.getElementById("content")) { document.addEventListener("DOMContentLoaded", run); @@ -48,5 +50,5 @@ export default function makeLayout(Layout) { run(); } - return ExampleLayout; + return ListeningLayout; } diff --git a/test/util/deepFreeze.js b/test/util/deepFreeze.js new file mode 100644 index 000000000..3a768f87a --- /dev/null +++ b/test/util/deepFreeze.js @@ -0,0 +1,35 @@ +// @flow + +// Deep freeze an object by using a Proxy. +// This is better than Object.freeze() as we can create coherent error messages +// and easily only deliver frozen subobjects when they are accessed. We can +// even add custom logic, like warning if you access a property that doesn't exist. +/* eslint-disable no-console */ +export default function deepFreeze(inputObj: T, options: {get: boolean, set: boolean} = {get: true, set: true}): $ReadOnly<{|...T|}> { + // Our handler that rejects any change to the object and any nested objects inside it + const deepFreezer = {}; + if (options.get) { + deepFreezer.get = function get(obj: T, prop: $Keys, _receiver: Proxy) { + // Clone w/o Proxy + if (prop === 'toJSON') return () => obj; + // If dealing with nested object, nest the proxy untill it reaches the direct property of it's parent proxy + if (typeof obj[prop] === 'object' && obj[prop] !== null) { + return new Proxy(obj[prop], deepFreezer); + } + // If prop is directly accessible, just do the default operation + else { + if (!(prop in obj) && prop !== 'length' && prop !== '__esModule' && typeof prop !== 'symbol') { + throw new Error(`Can not get unknown prop "${String(prop)}" on frozen object.`); + } + return obj[prop]; + } + }; + } + if (options.set) { + deepFreezer.set = function set(obj: T, prop: string, _val: any, _rec: Proxy): boolean { + throw new Error(`Can not set unknown prop "${prop}" on frozen object.`); + }; + } + // $FlowIgnore for all useful purposes the output type is T here + return new Proxy(inputObj, deepFreezer); +} \ No newline at end of file diff --git a/test/util/setupTests.js b/test/util/setupTests.js new file mode 100644 index 000000000..f6538444e --- /dev/null +++ b/test/util/setupTests.js @@ -0,0 +1,16 @@ +// @flow + +import Enzyme from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; + +Enzyme.configure({ adapter: new Adapter() }); + +// We rely on sort() being deterministic for tests, but it changed from QuickSort to TimSort +// in Node 12. This breaks tests, so we monkey-patch it. +import { sort } from "timsort"; + +// $FlowIgnore dirty hack +Array.prototype.sort = function(comparator) { + sort(this, comparator); + return this; +}; diff --git a/webpack.config.js b/webpack.config.js index 2633719b2..83ba40f02 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,5 @@ -var webpack = require("webpack"); +// @flow +const webpack = require("webpack"); // Builds bundle usable