{
  "errors": [],
  "warnings": [],
  "version": "1.5.1",
  "hash": "01878de52269a5e04b2d",
  "time": 2965,
  "assetsByChunkName": {
    "main": "react-datagrid.js"
  },
  "assets": [
    {
      "name": "react-datagrid.js",
      "size": 405488,
      "chunks": [
        0
      ],
      "chunkNames": [
        "main"
      ],
      "emitted": true
    }
  ],
  "chunks": [
    {
      "id": 0,
      "rendered": true,
      "initial": true,
      "entry": true,
      "extraAsync": false,
      "size": 378611,
      "names": [
        "main"
      ],
      "files": [
        "react-datagrid.js"
      ],
      "hash": "8d5679145bc04bafb4a9",
      "parents": [],
      "modules": [
        {
          "id": 0,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "name": "./src/index.jsx",
          "size": 15445,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "profile": {
            "factory": 16,
            "building": 220
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React    = require('react')\nvar assign   = require('object-assign')\nvar LoadMask = require('react-load-mask')\nvar Region   = require('region')\n\nvar Column = require('./models/Column')\n\nvar PropTypes      = require('./PropTypes')\nvar Wrapper        = require('./Wrapper')\nvar Header         = require('./Header')\nvar WrapperFactory = React.createFactory(Wrapper)\nvar HeaderFactory  = React.createFactory(Header)\n\nvar findIndexByName = require('./utils/findIndexByName')\nvar group           = require('./utils/group')\n\nvar slice          = require('./render/slice')\nvar renderTable    = require('./render/renderTable')\nvar getGroupedRows = require('./render/getGroupedRows')\n\nfunction emptyFn(){}\n\nfunction getVisibleCount(columns){\n    return columns.filter(function(c)  {return c.visible;}).length\n}\n\nfunction findColumn(columns, column){\n\n    var name = typeof column === 'string'? column: column.name\n    var index = findIndexByName(columns, name)\n\n    if (~index){\n        return columns[index]\n    }\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid',\n\n    mixins: [\n        require('./RowSelect'),\n        require('./ColumnFilter')\n    ],\n\n    propTypes: {\n        loading          : React.PropTypes.bool,\n        virtualRendering : React.PropTypes.bool,\n\n        //specify false if you don't want any column to be resizable\n        resizableColumns : React.PropTypes.bool,\n        filterableColumns: React.PropTypes.bool,\n\n        //specify false if you don't want column menus to be displayed\n        withColumnMenu   : React.PropTypes.bool,\n        cellEllipsis     : React.PropTypes.bool,\n        sortable         : React.PropTypes.bool,\n        idProperty       : React.PropTypes.string.isRequired,\n\n        //you can customize the column menu by specifying a factory\n        columnMenuFactory: React.PropTypes.func,\n\n        /**\n         * @cfg {Number/String} columnMinWidth=50\n         */\n        columnMinWidth   : PropTypes.numeric,\n        scrollBy         : PropTypes.numeric,\n        rowHeight        : PropTypes.numeric,\n        sortInfo         : PropTypes.sortInfo,\n        columns          : PropTypes.column\n    },\n\n    getDefaultProps: require('./getDefaultProps'),\n\n    componentDidMount: function(){\n        window.addEventListener('click', this.windowClickListener = this.onWindowClick)\n    },\n\n    componentWillUnmount: function(){\n        window.removeEventListener('click', this.windowClickListener)\n    },\n\n    onWindowClick: function(event){\n        if (this.state.menu){\n            this.setState({\n                menuColumn: null,\n                menu      : null\n            })\n        }\n    },\n\n    getInitialState: function(){\n\n        var props = this.props\n        var defaultSelected = props.defaultSelected\n\n        return {\n            scrollLeft: 0,\n            scrollTop : 0,\n            renderStartIndex: 0,\n            menuColumn: null,\n            defaultSelected: defaultSelected\n        }\n    },\n\n    handleScrollLeft: function(scrollLeft){\n        this.setState({\n            scrollLeft: scrollLeft,\n            menuColumn: null\n        })\n    },\n\n    handleScrollTop: function(scrollTop){\n        var state = {\n            menuColumn: null\n        }\n\n        if (this.props.virtualRendering){\n            state.renderStartIndex = Math.ceil(scrollTop / this.props.rowHeight)\n        } else {\n            state.scrollTop = scrollTop\n        }\n\n        this.setState(state)\n    },\n\n    getRenderEndIndex: function(props, state){\n        var startIndex = state.renderStartIndex\n        var rowCount   = props.rowCountBuffer\n        var length     = props.data.length\n\n        if (state.groupData){\n            length += state.groupData.groupsCount\n        }\n\n        if (!rowCount){\n            var maxHeight\n            if (props.style && typeof props.style.height === 'number'){\n                maxHeight = props.style.height\n            } else {\n                maxHeight = window.screen.height\n            }\n            rowCount = Math.floor(maxHeight / props.rowHeight)\n        }\n\n        var endIndex = startIndex + rowCount\n\n        if (endIndex > length - 1){\n            endIndex = length\n        }\n\n        return endIndex\n    },\n\n    onDropColumn: function(index, dropIndex){\n        ;(this.props.onColumnOrderChange || emptyFn)(index, dropIndex)\n    },\n\n    toggleColumn: function(props, column){\n\n        var visible = column.visible\n\n        column = findColumn(this.props.columns, column)\n\n        if (visible && getVisibleCount(props.columns) === 1){\n            return\n        }\n\n        var onHide  = this.props.onColumnHide || emptyFn\n        var onShow  = this.props.onColumnShow || emptyFn\n\n        visible?\n            onHide(column):\n            onShow(column)\n\n        var onChange = this.props.onColumnVisibilityChange || emptyFn\n\n        onChange(column, !visible)\n\n        if (column.defaultVisible != null){\n            //stateful behaviour\n            column.defaultVisible = !visible\n            this.setState({})\n        }\n    },\n\n    showMenu: function(menu, state){\n\n        state = state || {}\n        state.menu = menu\n\n        if (this.state.menu){\n            this.setState({\n                menu: null,\n                menuColumn: null\n            })\n        }\n\n        setTimeout(function(){\n            //since menu is hidden on click on window,\n            //show it in a timeout, after the click event has reached the window\n            this.setState(state)\n        }.bind(this), 0)\n    },\n\n    prepareHeader: function(props, state){\n\n        var allColumns = props.columns\n        var columns    = props.columns.filter(function(c)  {return c.visible;})\n\n        return (props.headerFactory || HeaderFactory)({\n            scrollLeft       : state.scrollLeft,\n            resizing         : state.resizing,\n            columns          : columns,\n            allColumns       : allColumns,\n            cellPadding      : props.cellPadding,\n            scrollbarSize    : props.scrollbarSize,\n            sortInfo         : props.sortInfo,\n            resizableColumns : props.resizableColumns,\n            filterableColumns: props.filterableColumns,\n            withColumnMenu   : props.withColumnMenu,\n            sortable         : props.sortable,\n\n            onDropColumn     : this.onDropColumn,\n            onSortChange     : props.onSortChange,\n            onColumnResizeDragStart: this.onColumnResizeDragStart,\n            onColumnResizeDrag: this.onColumnResizeDrag,\n            onColumnResizeDrop: this.onColumnResizeDrop,\n\n            toggleColumn     : this.toggleColumn.bind(this, props),\n            showMenu         : this.showMenu,\n            filterMenuFactory : this.filterMenuFactory,\n            menuColumn       : state.menuColumn,\n            columnMenuFactory: props.columnMenuFactory\n\n        })\n    },\n\n    prepareFooter: function(props, state){\n        return (props.footerFactory || React.DOM.div)({\n            className: 'z-footer-wrapper'\n        })\n    },\n\n    prepareRenderProps: function(props){\n\n        var result = {}\n        var list = {\n            className: true,\n            style: true\n        }\n\n        Object.keys(props).forEach(function(name){\n            // if (list[name] || name.indexOf('data-') == 0 || name.indexOf('on') === 0){\n            if (list[name]){\n                result[name] = props[name]\n            }\n        })\n\n        return result\n    },\n\n    render: function(){\n        var props = this.prepareProps(this.props)\n\n        var header      = this.prepareHeader(props, this.state)\n        var wrapper     = this.prepareWrapper(props, this.state)\n        var footer      = this.prepareFooter(props, this.state)\n        var resizeProxy = this.prepareResizeProxy(props, this.state)\n\n        var renderProps = this.prepareRenderProps(props)\n\n        return (\n            React.createElement(\"div\", React.__spread({},  renderProps), \n                React.createElement(\"div\", {className: \"z-inner\"}, \n                    header, \n                    wrapper, \n                    footer\n                ), \n\n                React.createElement(LoadMask, {visible: props.loading}), \n                resizeProxy\n            )\n        )\n    },\n\n    renderTable: function(props, state){\n        var table\n        var rows\n\n        if (props.groupBy){\n            rows = this.groupedRows = this.groupedRows || getGroupedRows(props, state.groupData)\n            rows = slice(rows, props)\n        }\n\n        table = renderTable.call(this, props, rows)\n\n        return table\n    },\n\n    prepareWrapper: function(props, state){\n        var virtualRendering = props.virtualRendering\n\n        var data       = props.data\n        var scrollTop  = state.scrollTop\n        var startIndex = state.renderStartIndex\n        var endIndex   = virtualRendering?\n                            this.getRenderEndIndex(props, state):\n                            0\n\n        var renderCount = virtualRendering?\n                            endIndex + 1 - startIndex:\n                            data.length\n\n        if (props.virtualRendering){\n            scrollTop = startIndex * props.rowHeight\n        }\n\n        var wrapperProps = assign({\n            scrollLeft      : state.scrollLeft,\n            scrollTop       : scrollTop,\n            startIndex      : startIndex,\n            totalLength     : data.length,\n            renderCount     : renderCount,\n            endIndex        : endIndex,\n\n            allColumns      : props.columns,\n\n            onScrollLeft    : this.handleScrollLeft,\n            onScrollTop     : this.handleScrollTop,\n\n            menu            : state.menu,\n            menuColumn      : state.menuColumn,\n            showMenu        : this.showMenu,\n\n            cellFactory     : props.cellFactory,\n            rowStyle        : props.rowStyle,\n            rowClassName    : props.rowClassName,\n            rowContextMenu  : props.rowContextMenu,\n\n            onRowClick: this.handleRowClick,\n            selected        : props.selected == null?\n                                    state.defaultSelected:\n                                    props.selected\n        }, props)\n\n        wrapperProps.columns = props.columns.filter(function(c)  {return c.visible;})\n        wrapperProps.table   = this.renderTable(wrapperProps, state)\n\n        return (props.WrapperFactory || WrapperFactory)(wrapperProps)\n\n    },\n\n    handleRowClick: function(rowProps, event){\n        if (this.props.onRowClick){\n            this.props.onRowClick(rowProps.data, rowProps, event)\n        }\n\n        this.handleSelection(rowProps, event)\n    },\n\n    prepareProps: function(thisProps){\n        var props = assign({}, thisProps)\n\n        this.prepareClassName(props)\n        props.style = this.prepareStyle(props)\n\n        this.prepareColumns(props)\n        // this.groupData(props)\n\n        return props\n    },\n\n    groupData: function(props){\n        if (props.groupBy){\n\n            this.setState({\n                groupData: group(props.data, props.groupBy)\n            })\n        }\n\n        delete this.groupedRows\n    },\n\n    componentWillMount: function(){\n        this.groupData(this.props)\n    },\n\n    componentWillReceiveProps: function(nextProps){\n        this.groupData(nextProps)\n    },\n\n    prepareStyle: function(props){\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        return style\n    },\n\n    prepareClassName: function(props){\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        if (props.cellEllipsis){\n            props.className += ' ' + props.cellEllipsisCls\n        }\n\n        if (props.styleAlternateRows){\n            props.className += ' ' + props.styleAlternateRowsCls\n        }\n\n        if (props.showCellBorders){\n            var cellBordersCls = props.showCellBorders === true?\n                                    props.showCellBordersCls + '-horizontal ' + props.showCellBordersCls + '-vertical':\n                                    props.showCellBordersCls + '-' + props.showCellBorders\n\n            props.className += ' ' + cellBordersCls\n\n        }\n\n        if (props.withColumnMenu){\n            props.className += ' ' + props.withColumnMenuCls\n        }\n    },\n\n    ///////////////////////////////////////\n    ///\n    /// Code dealing with preparing columns\n    ///\n    ///////////////////////////////////////\n    prepareColumns: function(props){\n        props.columns = props.columns.map(function(c)  {return Column(c, props);})\n\n        this.prepareColumnSizes(props)\n\n        props.columns.forEach(this.prepareColumnStyle.bind(this, props))\n    },\n\n    prepareColumnStyle: function(props, column){\n        var style    = column.style = {}\n        var minWidth = column.minWidth || props.columnMinWidth\n\n        style.minWidth = minWidth\n\n        if (column.flexible){\n            style.flex = column.flex || 1\n        } else {\n            style.width    = column.width\n            style.minWidth = column.width\n        }\n    },\n\n    prepareColumnSizes: function(props){\n\n        var visibleColumns = props.columns.filter(function(c)  {return c.visible;})\n        var totalWidth     = 0\n        var flexCount      = 0\n\n        visibleColumns.forEach(function(column){\n            column.minWidth = column.minWidth || props.columnMinWidth\n\n            if (!column.flexible){\n                totalWidth += column.width\n                return 0\n            } else if (column.minWidth){\n                totalWidth += column.minWidth\n            }\n\n            flexCount++\n        }, this)\n\n        props.columnFlexCount  = flexCount\n        props.totalColumnWidth = totalWidth\n    },\n\n    prepareResizeProxy: function(props, state){\n\n        var style = {}\n\n        if (state.resizing){\n            style.display = 'block'\n            style.left = state.resizeProxyLeft\n        }\n\n        return React.createElement(\"div\", {className: \"z-resize-proxy\", style: style})\n    },\n\n    onColumnResizeDragStart: function(config){\n\n        var domNode = this.getDOMNode()\n        var region  = Region.from(domNode)\n        var state = config\n\n        state.resizeProxyOffset = state.resizeProxyLeft - region.left\n        state.resizeProxyLeft = state.resizeProxyOffset\n\n        this.setState(state)\n    },\n\n    onColumnResizeDrag: function(config){\n        var resizeProxyOffset = this.state.resizeProxyOffset\n\n        config.resizeProxyLeft = resizeProxyOffset + config.resizeProxyDiff\n\n        this.setState(config)\n    },\n\n    onColumnResizeDrop: function(config, resizeInfo){\n\n        var props   = this.props\n        var columns = props.columns\n\n        var onColumnResize = props.onColumnResize || emptyFn\n        var first = resizeInfo[0]\n\n        var firstCol  = findColumn(columns, first.name)\n        var firstSize = first.size\n\n        var second = resizeInfo[1]\n        var secondCol = second? findColumn(columns, second.name): undefined\n        var secondSize = second? second.size: undefined\n\n        //if defaultWidth specified, update it\n        if (firstCol.width == null && firstCol.defaultWidth){\n            firstCol.defaultWidth = firstSize\n        }\n\n        if (secondCol && secondCol.width == null && secondCol.defaultWidth){\n            secondCol.defaultWidth = secondSize\n        }\n\n        this.setState(config)\n\n        onColumnResize(firstCol, firstSize, secondCol, secondSize)\n    }\n})"
        },
        {
          "id": 1,
          "identifier": "external \"React\"",
          "name": "external \"React\"",
          "size": 42,
          "cacheable": false,
          "built": false,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 0,
            "building": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:15-31"
            },
            {
              "moduleId": 7,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
              "module": "./src/render/renderTable.jsx",
              "moduleName": "./src/render/renderTable.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:12-28"
            },
            {
              "moduleId": 8,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
              "module": "./src/render/getGroupedRows.jsx",
              "moduleName": "./src/render/getGroupedRows.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:12-28"
            },
            {
              "moduleId": 12,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
              "module": "./src/Wrapper/index.jsx",
              "moduleName": "./src/Wrapper/index.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:14-30"
            },
            {
              "moduleId": 16,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
              "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:18-34"
            },
            {
              "moduleId": 26,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
              "module": "./src/Cell/index.jsx",
              "moduleName": "./src/Cell/index.jsx",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 46,
              "moduleIdentifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
              "module": "../react-load-mask/lib/Loader.js",
              "moduleName": "../react-load-mask/lib/Loader.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "5:17-33"
            },
            {
              "moduleId": 69,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
              "module": "../react-menus/lib/MenuItemCell.js",
              "moduleName": "../react-menus/lib/MenuItemCell.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 70,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
              "module": "../react-menus/lib/MenuSeparator.js",
              "moduleName": "../react-menus/lib/MenuSeparator.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 106,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
              "module": "../react-menus/lib/renderChildren.js",
              "moduleName": "../react-menus/lib/renderChildren.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:12-28"
            },
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:13-29"
            },
            {
              "moduleId": 108,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/propTypes.js",
              "module": "../react-menus/lib/propTypes.js",
              "moduleName": "../react-menus/lib/propTypes.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:12-28"
            },
            {
              "moduleId": 119,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
              "module": "../react-menus/lib/Scroller.js",
              "moduleName": "../react-menus/lib/Scroller.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "3:20-36"
            },
            {
              "moduleId": 123,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/react-clonewithprops/index.js",
              "module": "../react-menus/~/react-clonewithprops/index.js",
              "moduleName": "../react-menus/~/react-clonewithprops/index.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "2:15-31"
            }
          ]
        },
        {
          "id": 2,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
          "name": "./src/models/Column.js",
          "size": 2005,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 30,
            "building": 26,
            "dependencies": 275
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./models/Column",
              "loc": "8:13-39"
            }
          ],
          "source": "'use strict';\n\nvar humanize = require('ustring').humanize\nvar assign   = require('object-assign')\n\nfunction getVisibleInfo(col){\n    var visible = true\n    var defaultVisible\n\n    if (col.hidden != null){\n        visible = !col.hidden\n    } else if (col.visible != null){\n        visible = !!col.visible\n    } else {\n        //no visible or hidden specified\n        //so we look for defaultVisible/defaultHidden\n\n        if (col.defaultHidden != null){\n            defaultVisible = !col.defaultHidden\n        } else if (col.defaultVisible != null){\n            defaultVisible = !!col.defaultVisible\n        }\n\n        if (defaultVisible != null){\n            visible = defaultVisible\n        }\n    }\n\n    return {\n        visible: visible,\n        defaultVisible: defaultVisible\n    }\n}\n\nvar Column = function(col, props){\n\n    col = assign({}, Column.defaults, col)\n\n    //title\n    if (!col.title){\n        col.title = humanize(col.name)\n    }\n\n    //sortable\n    if (props && !props.sortable){\n        col.sortable = false\n    }\n    col.sortable = !!col.sortable\n\n    //resizable\n    if (props && props.resizableColumns === false){\n        col.resizable = false\n    }\n    col.resizable = !!col.resizable\n\n    //filterable\n    if (props && props.filterableColumns === false){\n        col.filterable = false\n    }\n    col.filterable = !!col.filterable\n\n    var visibleInfo = getVisibleInfo(col)\n    var visible = visibleInfo.visible\n\n    if (visibleInfo.defaultVisible != null){\n        col.defaultHidden  = !visibleInfo.defaultVisible\n        col.defaultVisible = visibleInfo.defaultVisible\n    }\n\n    //hidden\n    col.hidden = !visible\n    //visible\n    col.visible  = visible\n\n    if (col.width == null && col.defaultWidth){\n        col.width = col.defaultWidth\n    }\n\n    //flexible\n    col.flexible = !col.width\n\n    return col\n}\n\nColumn.displayName = 'Column'\n\nColumn.defaults = {\n    sortable  : true,\n    filterable: true,\n    resizable : true,\n    type      : 'string'\n}\n\nmodule.exports = Column"
        },
        {
          "id": 3,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/PropTypes.js",
          "name": "./src/PropTypes.js",
          "size": 1104,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 31,
            "building": 35
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./PropTypes",
              "loc": "10:21-43"
            }
          ],
          "source": "'use strict';\n\nfunction val(fn){\n\n    return function(props, propName){\n\n        return fn(props[propName], propName, props)\n    }\n}\n\nmodule.exports = {\n    numeric: val(function(value, propName){\n\n        if (value == null){\n            return\n        }\n        if (value * 1 != value){\n            return new Error('Invalid numeric value for ' + propName)\n        }\n    }),\n\n    sortInfo: val(function(value){\n        if (typeof value == 'string' || typeof value == 'number'){\n            return new Error('Invalid sortInfo specified')\n        }\n    }),\n\n    column: val(function(value, props, propName){\n\n        if (!value){\n            return new Error('No columns specified. Please specify at least one column!')\n        }\n\n        if (!Array.isArray(value)){\n            value = props[propName] = [value]\n        }\n\n        var err\n\n        value.some(function(col, index){\n            if (!col.name){\n                err = new Error('All grid columns must have a name! Column at index ' + index + ' has no name!')\n                return true\n            }\n        })\n\n        return err\n\n    })\n}"
        },
        {
          "id": 4,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexByName.js",
          "name": "./src/utils/findIndexByName.js",
          "size": 215,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 33,
            "building": 34,
            "dependencies": 276
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./utils/findIndexByName",
              "loc": "16:22-56"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "../utils/findIndexByName",
              "loc": "10:22-57"
            },
            {
              "moduleId": 24,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
              "module": "./src/Header/setupColumnResize.js",
              "moduleName": "./src/Header/setupColumnResize.js",
              "type": "cjs require",
              "userRequest": "../utils/findIndexByName",
              "loc": "6:22-57"
            }
          ],
          "source": "'use strict';\n\nvar findIndexBy =require('./findIndexBy')\n\nfunction findIndexByName(arr, name){\n    return findIndexBy(arr, function(info){\n        return info.name === name\n    })\n}\n\nmodule.exports = findIndexByName"
        },
        {
          "id": 5,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
          "name": "./src/utils/group.js",
          "size": 2560,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 34,
            "building": 57
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./utils/group",
              "loc": "17:22-46"
            }
          ],
          "source": "'use strict';\n\nvar hasown = require('hasown')\n\nfunction copyIf(source, target){\n    var hasOwn = hasown(target)\n\n    Object.keys(source).forEach(function(key){\n        if (!hasOwn(key)){\n            target[key] = source[key]\n        }\n    })\n}\n\nfunction groupByFields(data, fields, path, names, fieldIndex){\n    data       = data       || []\n    fieldIndex = fieldIndex || 0\n\n    var field = fields[fieldIndex]\n\n    if (!field){\n        return data\n    }\n\n    var group     = groupArrayByField(data, field)\n    var fieldName = typeof field == 'string'?\n                            field:\n                            field.name\n\n    if (!fieldIndex){\n        group.namePath  = []\n        group.valuePath = []\n        group.depth     = 0\n        delete group.name\n    }\n\n    var groupsCount = group.length\n\n    if (group.keys && group.keys.length){\n\n        group.leaf = false\n        group.keys.forEach(function(key){\n\n            var groupPath  = (path || []).concat(key)\n            var fieldNames = (names || []).concat(fieldName)\n            var data = groupByFields(group.data[key], fields, groupPath, fieldNames, fieldIndex + 1)\n\n            if (Array.isArray(data)){\n                data = {\n                    data: data,\n                    leaf: true\n                }\n            }\n\n            data.name      = fieldName\n            data.value     = key\n            data.valuePath = groupPath\n            data.namePath  = fieldNames\n            data.depth     = fieldIndex + 1\n\n            if (typeof field != 'string'){\n\n                copyIf(field, data)\n            }\n\n            group.data[key] = data\n\n            if (!data.leaf){\n                groupsCount += data.groupsCount\n            }\n\n        })\n    }\n\n    if (!group.leaf){\n        group.groupsCount = groupsCount\n    }\n\n    return group\n}\n\nfunction groupArrayByField(data, field){\n\n    var groupKeys      = {}\n    var groupKeysArray = []\n\n    var fieldName      = typeof field == 'string'?\n                            field:\n                            field.name\n\n    ;(data || []).forEach(function(item){\n        var itemKey = item[fieldName]\n\n        if (groupKeys[itemKey]){\n            groupKeys[itemKey].push(item)\n        } else {\n            groupKeys[itemKey] = [item]\n            groupKeysArray.push(itemKey)\n        }\n    })\n\n    var result = {\n        keys      : groupKeysArray,\n        data      : groupKeys,\n        childName : fieldName,\n        length    : groupKeysArray.length,\n        leaf      : true\n    }\n\n    return result\n}\n\nmodule.exports = groupByFields"
        },
        {
          "id": 6,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/render/slice.js",
          "name": "./src/render/slice.js",
          "size": 243,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 34,
            "building": 60
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./render/slice",
              "loc": "19:21-46"
            },
            {
              "moduleId": 7,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
              "module": "./src/render/renderTable.jsx",
              "moduleName": "./src/render/renderTable.jsx",
              "type": "cjs require",
              "userRequest": "./slice",
              "loc": "7:13-31"
            }
          ],
          "source": "'use strict';\n\nfunction slice(data, props){\n\n    if (!props.virtualRendering){\n        return data\n    }\n\n    return data.slice(\n            props.startIndex,\n            props.startIndex + props.renderCount\n        )\n}\n\nmodule.exports = slice"
        },
        {
          "id": 7,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "name": "./src/render/renderTable.jsx",
          "size": 695,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 33,
            "building": 64,
            "dependencies": 216
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./render/renderTable",
              "loc": "20:21-52"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React = require('react')\nvar renderMenu = require('./renderMenu')\nvar renderRow  = require('./renderRow')\nvar tableStyle  = require('./tableStyle')\nvar slice  = require('./slice')\n\nfunction getData(props){\n\n    if (!props.virtualRendering){\n        return props.data\n    }\n\n    return slice(props.data, props)\n}\n\nmodule.exports = function(props, rows){\n\n    rows = rows || getData(props).map(function(data, index){\n        return renderRow.call(this, props, data, index + props.startIndex)\n    }, this)\n\n    return React.createElement(\"div\", {ref: \"table\", className: \"z-table\", style: tableStyle(props)}, \n        rows, \n        renderMenu(props)\n    )\n}"
        },
        {
          "id": 8,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "name": "./src/render/getGroupedRows.jsx",
          "size": 2115,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 34,
            "building": 86,
            "dependencies": 214
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./render/getGroupedRows",
              "loc": "21:21-55"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React = require('react')\n\nvar Row         = require('../Row')\nvar Cell        = require('../Cell')\nvar CellFactory = React.createFactory(Cell)\n\nvar renderRow = require('./renderRow')\n\nfunction renderData(props, data, depth){\n\n    return data.map(function(data, index){\n\n        return renderRow(props, data, index, function(config){\n            config.cellFactory = function(cellProps){\n                if (cellProps.index === 0){\n                    cellProps.innerStyle = {\n                        paddingLeft: depth * props.groupNestingWidth\n                    }\n                }\n\n                return CellFactory(cellProps)\n            }\n\n            config.className += ' z-grouped'\n\n            return config\n        })\n    })\n}\n\nfunction renderGroupRow(props, groupData){\n\n    var style = {\n        paddingLeft: (groupData.depth - 1)* props.groupNestingWidth\n    }\n\n    var cellStyle = {\n        minWidth: props.totalColumnWidth,\n        maxWidth: props.totalColumnWidth\n    }\n\n    return React.createElement(Row, {className: \"z-group-row\", key: 'group-'+groupData.valuePath, rowHeight: props.rowHeight}, \n        React.createElement(Cell, {\n            className: \"z-group-cell\", \n            textPadding: props.cellPadding, \n            innerStyle: style, \n            text: groupData.value, \n            style: cellStyle}\n        )\n    )\n}\n\nfunction renderGroup(props, groupData){\n\n    var result = [renderGroupRow(props, groupData)]\n\n    if (groupData && groupData.leaf){\n        result.push.apply(result, renderData(props, groupData.data, groupData.depth))\n    } else {\n        groupData.keys.forEach(function(key){\n            var items = renderGroup(props, groupData.data[key])\n            result.push.apply(result, items)\n        })\n    }\n\n    return result\n}\n\nfunction renderGroups(props, groupsData){\n    var result = []\n\n    groupsData.keys.map(function(key){\n        result.push.apply(result, renderGroup(props, groupsData.data[key]))\n    })\n\n    return result\n}\n\nmodule.exports = function(props, groupData){\n    return renderGroups(props, groupData)\n}"
        },
        {
          "id": 9,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
          "name": "./src/RowSelect.js",
          "size": 6038,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 34,
            "building": 131,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./RowSelect",
              "loc": "44:8-30"
            }
          ],
          "source": "'use strict';\n\nvar assign = require('object-assign')\nvar getSelected = require('./getSelected')\n\nvar hasOwn = function(obj, prop){\n    return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\n/**\n * Here is how multi selection is implemented - trying to emulate behavior in OSX Finder\n *\n * When there is no selection, and an initial click for selection is done, keep that index (SELINDEX)\n *\n * Next, if we shift+click, we mark as selected the items from initial index to current click index.\n *\n * Now, if we ctrl+click elsewhere, keep the selection, but also add the selected file,\n * and set SELINDEX to the new index. Now on any subsequent clicks, have the same behavior,\n * selecting/deselecting items starting from SELINDEX to the new click index\n */\n\n\nmodule.exports = {\n\n    findInitialSelectionIndex: function(){\n        var selected = getSelected(this.props, this.state)\n        var index = undefined\n\n        if (!Object.keys(selected).length){\n            return index\n        }\n\n\n        var i = 0\n        var data = this.props.data\n        var len = data.length\n        var id\n        var idProperty = this.props.idProperty\n\n        for (; i < len; i++){\n            id = data[i][idProperty]\n\n            if (selected[id]){\n                index = i\n            }\n        }\n\n        return index\n    },\n\n    notifySelection: function(selected, data){\n        if (typeof this.props.onSelectionChange == 'function'){\n            this.props.onSelectionChange(selected, data)\n        }\n\n        if (!hasOwn(this.props, 'selected')){\n            this.setState({\n                defaultSelected: selected\n            })\n        }\n    },\n\n    handleSingleSelection: function(data, event){\n        var props = this.props\n\n        var rowSelected = this.isRowSelected(data)\n        var newSelected = !rowSelected\n\n        if (rowSelected && event && !event.ctrlKey){\n            //if already selected and not ctrl, keep selected\n            newSelected = true\n        }\n\n        var selectedId = newSelected?\n                            data[props.idProperty]:\n                            null\n\n        this.notifySelection(selectedId, data)\n    },\n\n\n    handleMultiSelection: function(data, event, config){\n\n        var selIndex = config.selIndex\n        var prevShiftKeyIndex = config.prevShiftKeyIndex\n\n        var props = this.props\n        var map   = selIndex == null?\n                        {}:\n                        assign({}, getSelected(props, this.state))\n\n        if (prevShiftKeyIndex != null && selIndex != null){\n            var min = Math.min(prevShiftKeyIndex, selIndex)\n            var max = Math.max(prevShiftKeyIndex, selIndex)\n\n            var removeArray = props.data.slice(min, max + 1) || []\n\n            removeArray.forEach(function(item){\n                if (item){\n                    var id = item[props.idProperty]\n                    delete map[id]\n                }\n            })\n        }\n\n        data.forEach(function(item){\n            if (item){\n                var id = item[props.idProperty]\n                map[id] = item\n            }\n        })\n\n        this.notifySelection(map, data)\n    },\n\n    handleMultiSelectionRowToggle: function(data, event){\n\n        var selected   = getSelected(this.props, this.state)\n        var isSelected = this.isRowSelected(data)\n\n        var clone = assign({}, selected)\n        var id    = data[this.props.idProperty]\n\n        if (isSelected){\n            delete clone[id]\n        } else {\n            clone[id] = data\n        }\n\n        this.notifySelection(clone, data)\n\n        return isSelected\n    },\n\n    handleSelection: function(rowProps, event){\n\n        var props = this.props\n\n        if (!hasOwn(props, 'selected') && !hasOwn(props, 'defaultSelected')){\n            return\n        }\n\n        var isSelected  = this.isRowSelected(rowProps.data)\n        var multiSelect = this.isMultiSelect()\n\n        if (!multiSelect){\n            this.handleSingleSelection(rowProps.data, event)\n            return\n        }\n\n        if (this.selIndex === undefined){\n            this.selIndex = this.findInitialSelectionIndex()\n        }\n\n        var selIndex = this.selIndex\n\n        //multi selection\n        var index = rowProps.index\n        var prevShiftKeyIndex = this.shiftKeyIndex\n        var start\n        var end\n        var data\n\n        if (event.ctrlKey){\n            this.selIndex = index\n            this.shiftKeyIndex = null\n\n            var unselect = this.handleMultiSelectionRowToggle(props.data[index], event)\n\n            if (unselect){\n                this.selIndex++\n                this.shiftKeyIndex = prevShiftKeyIndex\n            }\n\n            return\n        }\n\n        if (!event.shiftKey){\n            //set selIndex, for future use\n            this.selIndex = index\n            this.shiftKeyIndex = null\n\n            //should not select many, so make selIndex null\n            selIndex = null\n        } else {\n            this.shiftKeyIndex = index\n        }\n\n        if (selIndex == null){\n            data = [props.data[index]]\n        } else {\n            start = Math.min(index, selIndex)\n            end   = Math.max(index, selIndex) + 1\n            data  = props.data.slice(start, end)\n        }\n\n        this.handleMultiSelection(data, event, {\n            selIndex: selIndex,\n            prevShiftKeyIndex: prevShiftKeyIndex\n        })\n    },\n\n\n    isRowSelected: function(data){\n        var selectedMap = this.getSelectedMap()\n        var id          = data[this.props.idProperty]\n\n        return selectedMap[id]\n    },\n\n    isMultiSelect: function(){\n        var selected = getSelected(this.props, this.state)\n\n        return selected && typeof selected == 'object'\n    },\n\n    getSelectedMap: function(){\n        var selected    = getSelected(this.props, this.state)\n        var multiSelect = selected && typeof selected == 'object'\n        var map\n\n        if (multiSelect){\n            map = selected\n        } else {\n            map = {}\n            map[selected] = true\n        }\n\n        return map\n    }\n}"
        },
        {
          "id": 10,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
          "name": "./src/ColumnFilter.js",
          "size": 4488,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 35,
            "building": 161,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./ColumnFilter",
              "loc": "45:8-33"
            }
          ],
          "source": "'use strict';\n\nvar assign = require('object-assign')\nvar ReactMenu = require('react-menus')\n\nfunction stopPropagation(event){\n    event.stopPropagation()\n}\n\nfunction emptyFn(){}\n\nvar FILTER_FIELDS = {}\n\nmodule.exports = {\n\n    getColumnFilterFieldFactory: function(column){\n\n        var type = column.type || 'string'\n\n        return FILTER_FIELDS[type] || React.DOM.input\n    },\n\n    getFilterField: function(props){\n        var column = props.column\n        var filterValue = this.filterValues?\n                            this.filterValues[column.name]:\n                            ''\n\n        var fieldProps = {\n            autoFocus   : true,\n            defaultValue: filterValue,\n            column      : column,\n            onChange    : this.onFilterChange.bind(this, column),\n            onKeyUp     : this.onFilterKeyUp.bind(this, column)\n        }\n\n        var fieldFactory = column.renderFilterField || this.props.renderFilterField\n        var field\n\n        if (fieldFactory){\n            field = fieldFactory(fieldProps)\n        }\n\n        if (field === undefined){\n            field = this.getColumnFilterFieldFactory(column)(fieldProps)\n        }\n\n        return field\n    },\n\n    onFilterKeyUp: function(column, event){\n        if (event.key == 'Enter'){\n            this.onFilterClick(column, event)\n        }\n    },\n\n    onFilterChange: function(column, eventOrValue){\n\n        var value = eventOrValue\n\n        if (eventOrValue && eventOrValue.target){\n            value = eventOrValue.target.value\n        }\n\n        this.filterValues = this.filterValues || {}\n        this.filterValues[column.name] = value\n\n        if (this.props.liveFilter){\n            this.filterBy(column, value)\n        }\n    },\n\n    filterBy: function(column, value, event){\n        ;(this.props.onFilter || emptyFn)(column, value, this.filterValues, event)\n    },\n\n    onFilterClick: function(column, event){\n        this.showMenu(null)\n\n        var value = this.filterValues? this.filterValues[column.name]: ''\n\n        this.filterBy(column, value, event)\n    },\n\n    onFilterClear: function(column){\n        this.showMenu(null)\n\n        if (this.filterValues){\n            this.filterValues[column.name] = ''\n        }\n\n        this.filterBy(column, '')\n\n        ;(this.props.onClearFilter || emptyFn).apply(null, arguments)\n    },\n\n    getFilterButtons: function(props){\n\n        var column = props.column\n        var factory = column.renderFilterButtons || this.props.renderFilterButtons\n\n        var result\n\n        if (factory){\n            result = factory(props)\n        }\n\n        if (result !== undefined){\n            return result\n        }\n\n        var doFilter = this.onFilterClick.bind(this, column)\n        var doClear = this.onFilterClear.bind(this, column)\n\n        return React.createElement(\"div\", {style: {textAlign: 'center'}}, \n            React.createElement(\"button\", {onClick: doFilter}, \"Filter\"), \n            React.createElement(\"button\", {onClick: doClear, style: {marginLeft: 5}}, \"Clear\")\n        )\n    },\n\n    filterMenuFactory: function(props){\n\n        var overStyle = {\n            background: 'white'\n        }\n\n        var column  = props.column\n        var field   = this.getFilterField(props)\n        var buttons = this.getFilterButtons({\n            column: column\n        })\n\n        var children = [\n            field,\n            buttons\n        ].map(function(x, index){\n            return React.createElement(ReactMenu.Item, {key: index}, \n                React.createElement(ReactMenu.Item.Cell, null, \n                    x\n                )\n            )\n        })\n\n        props.itemOverStyle   = props.itemOverStyle || overStyle\n        props.itemActiveStyle = props.itemActiveStyle || overStyle\n        props.onClick = props.onClick || stopPropagation\n\n        var factory = this.props.filterMenuFactory\n        var result\n\n        if (factory){\n            result = factory(props)\n\n            if (result !== undefined){\n                return result\n            }\n        }\n\n        props.onMount = this.onFilterMenuMount\n\n        return React.createElement(ReactMenu, React.__spread({},  props), \n            children\n        )\n    },\n\n    onFilterMenuMount: function(menu){\n        var dom = menu.getDOMNode()\n\n        if (dom){\n            var input = dom.querySelector('input')\n\n            if (input){\n                setTimeout(function(){\n                    input.focus()\n                }, 10)\n            }\n        }\n    }\n}"
        },
        {
          "id": 11,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/getDefaultProps.js",
          "name": "./src/getDefaultProps.js",
          "size": 803,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 35,
            "building": 173
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./getDefaultProps",
              "loc": "75:21-49"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function(){\n    return {\n        loading: false,\n        columnMinWidth: 50,\n        cellPadding: 5,\n        scrollbarSize: 16,\n\n        scrollBy: undefined,\n        virtualRendering: true,\n\n        styleAlternateRowsCls: 'z-style-alternate',\n        withColumnMenuCls: 'z-with-column-menu',\n        cellEllipsisCls: 'z-cell-ellipsis',\n        defaultClassName: 'react-datagrid',\n\n        withColumnMenu: true,\n        sortable: true,\n        filterableColumns: true,\n        resizableColumns: true,\n\n        showCellBordersCls: 'z-cell-borders',\n        showCellBorders: false,\n        styleAlternateRows: true,\n        cellEllipsis: true,\n        rowHeight: 31,\n\n        groupNestingWidth: 20,\n\n        defaultStyle: {\n            position: 'relative'\n        }\n    }\n}"
        },
        {
          "id": 12,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
          "name": "./src/Wrapper/index.jsx",
          "size": 5423,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 38,
            "building": 199,
            "dependencies": 104
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./Wrapper",
              "loc": "11:21-41"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nfunction signum(x){\n    return x < 0? -1: 1\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Wrapper',\n\n    propTypes: {\n        scrollLeft      : React.PropTypes.number,\n        scrollTop       : React.PropTypes.number,\n        scrollbarSize   : React.PropTypes.number,\n        totalColumnWidth: React.PropTypes.number,\n        cellPadding     : React.PropTypes.number,\n        rowHeight       : React.PropTypes.any,\n\n        data            : React.PropTypes.array,\n        columns         : React.PropTypes.array,\n        idProperty      : React.PropTypes.string.isRequired,\n\n        rowFactory      : React.PropTypes.func\n    },\n\n    getDefaultProps: function(){\n\n        return {\n            scrollLeft: 0,\n            scrollTop : 0\n        }\n    },\n\n    syncVerticalScroller: function(){\n\n        var scrollTop = this.props.scrollTop\n\n        this.refs.verticalScrollbar.getDOMNode().scrollTop = scrollTop\n    },\n\n    render: function() {\n\n        var props     = this.prepareProps(this.props)\n        var rowsCount = props.renderCount\n\n        var groupsCount = 0\n        var table = props.table\n\n        if (props.groupData){\n            groupsCount = props.groupData.groupsCount\n        }\n\n        if (props.virtualRendering){\n            rowsCount += groupsCount\n        }\n\n        this.groupsCount = groupsCount\n\n        // console.log(props.renderCount)\n\n        var horizontalScrollerSize = props.totalColumnWidth + props.scrollbarSize\n        var verticalScrollerSize   = (props.totalLength + groupsCount) * props.rowHeight\n\n        return (\n            React.createElement(\"div\", {className: \"z-wrapper\", style: {height: rowsCount * props.rowHeight}}, \n                React.createElement(\"div\", {ref: \"tableWrapper\", className: \"z-table-wrapper\", style: {paddingRight: props.scrollbarSize}, onWheel: this.handleWheel}, \n                    table, \n                    React.createElement(\"div\", {ref: \"verticalScrollbar\", className: \"z-vertical-scrollbar\", style: {width: props.scrollbarSize}, onScroll: this.handleVerticalScroll}, \n                        React.createElement(\"div\", {className: \"z-vertical-scroller\", style: {height: verticalScrollerSize}})\n                    ), \n                    React.createElement(\"div\", {className: \"z-horizontal-scroller\", style: {width: horizontalScrollerSize}})\n                ), \n                React.createElement(\"div\", {ref: \"horizontalScrollbar\", className: \"z-horizontal-scrollbar\", onScroll: this.handleHorizontalScroll}, \n                    React.createElement(\"div\", {className: \"z-horizontal-scroller\", style: {width: horizontalScrollerSize}})\n                )\n            )\n        )\n    },\n\n    handleWheel: function(event){\n        event.stopPropagation()\n        event.preventDefault()\n\n        var delta = event.deltaY\n\n        if (delta && Math.abs(delta) < 40){\n            delta = signum(delta) * 40\n        }\n\n        if (event.shiftKey){\n\n            if (!delta){\n                delta = event.deltaX\n            }\n\n            var horizontalScrollbar = this.refs.horizontalScrollbar\n            horizontalScrollbar.getDOMNode().scrollLeft += delta\n            return\n        }\n\n        this.addMouseWheelDelta(delta)\n    },\n\n    getTableScrollHeight: function(){\n        var props  = this.props\n        var result = props.virtualRendering?\n                        (props.totalLength + this.groupsCount || 0) * props.rowHeight:\n                        this.refs.table.getDOMNode().offsetHeight\n\n        return result\n    },\n\n    addMouseWheelDelta: function(deltaY){\n        var props   = this.props\n        var virtual = props.virtualRendering\n\n        var tableHeight         = this.getTableScrollHeight()\n        var tableWrapper        = this.refs.tableWrapper.getDOMNode()\n        var horizontalScrollbar = this.refs.horizontalScrollbar.getDOMNode()\n        var wrapperHeight       = tableWrapper.offsetHeight - horizontalScrollbar.offsetHeight\n\n        var scrollTop = virtual?\n                            props.startIndex * props.rowHeight:\n                            props.scrollTop\n\n        if (virtual && deltaY < 0 && -deltaY < props.rowHeight){\n            //when scrolling to go up, account for the case where abs(deltaY)\n            //is less than the rowHeight, as this results in no scrolling\n            //so make sure it's at least deltaY\n            deltaY = -props.rowHeight\n        }\n\n        if (virtual && props.scrollBy){\n            deltaY = signum(deltaY) * props.scrollBy * props.rowHeight\n        }\n\n        scrollTop += deltaY\n\n        if (scrollTop + wrapperHeight > tableHeight){\n            scrollTop = tableHeight - wrapperHeight\n        }\n        if (scrollTop < 0){\n            scrollTop = 0\n        }\n\n        this.onVerticalScroll(scrollTop)\n\n        setTimeout(function(){\n            this.syncVerticalScroller()\n        }.bind(this), 0)\n    },\n\n\n    handleHorizontalScroll: function(event){\n        this.props.onScrollLeft(event.target.scrollLeft)\n    },\n    handleVerticalScroll: function(event){\n        this.onVerticalScroll(event.target.scrollTop)\n    },\n\n    onVerticalScroll: function(pos){\n        this.props.onScrollTop(pos)\n    },\n\n    prepareProps: function(thisProps){\n        var props = {}\n\n        assign(props, thisProps)\n\n        return props\n    }\n})\n"
        },
        {
          "id": 13,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "name": "./src/Header/index.jsx",
          "size": 11716,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 38,
            "building": 264,
            "dependencies": 163
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "./Header",
              "loc": "12:21-40"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React   = require('react')\nvar Region  = require('region')\nvar ReactMenu = React.createFactory(require('react-menus'))\nvar assign  = require('object-assign')\nvar clone   = require('clone')\nvar asArray = require('../utils/asArray')\nvar findIndexBy = require('../utils/findIndexBy')\nvar findIndexByName = require('../utils/findIndexByName')\nvar Cell    = require('../Cell')\nvar setupColumnDrag   = require('./setupColumnDrag')\nvar setupColumnResize = require('./setupColumnResize')\n\nfunction emptyFn(){}\n\nfunction getColumnSortInfo(column, sortInfo){\n\n    sortInfo = asArray(sortInfo)\n\n    var index = findIndexBy(sortInfo, function(info){\n        return info.name === column.name\n    })\n\n    return sortInfo[index]\n}\n\nfunction removeColumnSort(column, sortInfo){\n    sortInfo = asArray(sortInfo)\n\n    var index = findIndexBy(sortInfo, function(info){\n        return info.name === column.name\n    })\n\n    if (~index){\n        sortInfo.splice(index, 1)\n    }\n\n    return sortInfo\n}\n\nfunction getDropState(){\n    return {\n        dragLeft  : null,\n        dragColumn: null,\n        dragColumnIndex: null,\n        dragging  : false,\n        dropIndex : null,\n\n        shiftIndexes: null,\n        shiftSize: null\n    }\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Header',\n\n    propTypes: {\n        columns: React.PropTypes.array\n    },\n\n    onDrop: function(event){\n        if (this.state.dragging){\n            event.stopPropagation()\n        }\n\n        var dragIndex = this.state.dragColumnIndex\n        var dropIndex = this.state.dropIndex\n\n        if (dropIndex != null){\n\n            //since we need the indexes in the array of all columns\n            //not only in the array of the visible columns\n            //we need to search them and make this transform\n            var dragColumn = this.props.columns[dragIndex]\n            var dropColumn = this.props.columns[dropIndex]\n\n            dragIndex = findIndexByName(this.props.allColumns, dragColumn.name)\n            dropIndex = findIndexByName(this.props.allColumns, dropColumn.name)\n\n            this.props.onDropColumn(dragIndex, dropIndex)\n        }\n\n        this.setState(getDropState())\n    },\n\n    getDefaultProps: function(){\n        return {\n            defaultClassName : 'z-header-wrapper',\n            draggingClassName: 'z-dragging',\n            cellClassName    : 'z-column-header',\n            defaultStyle    : {},\n            sortInfo        : null,\n            scrollLeft      : 0,\n            scrollTop       : 0\n        }\n    },\n\n    getInitialState: function(){\n\n        return {\n            mouseOver : true,\n            dragging  : false,\n\n            shiftSize : null,\n            dragColumn: null,\n            shiftIndexes: null\n        }\n    },\n\n    render: function() {\n\n        var props = this.prepareProps(this.props)\n\n        var cells = props.columns\n                        .map(this.renderCell.bind(this, props, this.state))\n\n        var headerStyle = {\n            paddingRight: props.scrollbarSize,\n            transform   : 'translate3d(' + -props.scrollLeft + 'px, ' + -props.scrollTop + 'px, 0px)'\n        }\n\n        return (\n            React.createElement(\"div\", {style: props.style, className: props.className}, \n                React.createElement(\"div\", {className: \"z-header\", style: headerStyle}, \n                    cells\n                )\n            )\n        )\n    },\n\n    renderCell: function(props, state, column, index){\n\n        var resizing  = props.resizing\n        var text      = column.title\n        var className = props.cellClassName || ''\n        var style     = {\n            left: 0\n        }\n\n        var menu = this.renderColumnMenu(props, state, column, index)\n\n        if (state.dragColumn && state.shiftIndexes && state.shiftIndexes[index]){\n            style.left = state.shiftSize\n        }\n\n        if (state.dragColumn === column){\n            className += ' z-drag z-over'\n            style.zIndex = 1\n            style.left = state.dragLeft || 0\n        }\n\n        var filter  = column.filterable?\n                        React.createElement(\"div\", {className: \"z-show-filter\", onMouseUp: this.handleFilterMouseUp.bind(this, column)}):\n                        null\n\n        var resizer = column.resizable?\n                        React.createElement(\"span\", {className: \"z-column-resize\", onMouseDown: this.handleResizeMouseDown.bind(this, column)}):\n                        null\n\n        if (column.sortable){\n            text = React.createElement(\"span\", null, text, React.createElement(\"span\", {className: \"z-icon-sort-info\"}))\n\n            var sortInfo = getColumnSortInfo(column, props.sortInfo)\n\n            if (sortInfo && sortInfo.dir){\n                className += (sortInfo.dir === -1 || sortInfo.dir === 'desc'?\n                                ' z-desc':\n                                ' z-asc')\n            }\n\n            className += ' z-sortable'\n        }\n\n        if (filter){\n            className += ' z-filterable'\n        }\n\n        if (state.mouseOver === column.name && !resizing){\n            className += ' z-over'\n        }\n\n        if (props.menuColumn === column.name){\n            className += ' z-active'\n        }\n\n        className += ' z-unselectable'\n\n        return (\n            React.createElement(Cell, {\n                key: column.name, \n                textPadding: props.cellPadding, \n                columns: props.columns, \n                index: index, \n                className: className, \n                style: style, \n                text: text, \n                onMouseOver: this.handleMouseOver.bind(this, column), \n                onMouseOut: this.handleMouseOut.bind(this, column), \n                onMouseDown: this.handleMouseDown.bind(this, column), \n\n                onMouseUp: this.handleMouseUp.bind(this, column)\n            }, \n                filter, \n                menu, \n                resizer\n            )\n        )\n    },\n\n    toggleSort: function(column){\n        var sortInfo       = asArray(clone(this.props.sortInfo))\n        var columnSortInfo = getColumnSortInfo(column, sortInfo)\n\n        if (!columnSortInfo){\n            columnSortInfo = {\n                name: column.name,\n                type: column.type,\n                fn  : column.sortFn\n            }\n\n            sortInfo.push(columnSortInfo)\n        }\n\n        if (typeof column.toggleSort === 'function'){\n            column.toggleSort(columnSortInfo, sortInfo)\n        } else {\n\n            var dir     = columnSortInfo.dir\n            var dirSign = dir === 'asc'? 1 : dir === 'desc'? -1: dir\n            var newDir  = dirSign === 1? -1: dirSign === -1?  0: 1\n\n            columnSortInfo.dir = newDir\n\n            if (!newDir){\n                sortInfo = removeColumnSort(column, sortInfo)\n            }\n        }\n\n        ;(this.props.onSortChange || emptyFn)(sortInfo)\n    },\n\n    renderColumnMenu: function(props, state, column, index){\n        if (!props.withColumnMenu){\n            return\n        }\n\n        return React.createElement(\"div\", {className: \"z-show-menu\", onMouseUp: this.handleShowMenuMouseUp.bind(this, props, column, index)})\n    },\n\n    handleShowMenuMouseUp: function(props, column, index, event){\n        event.nativeEvent.stopSort = true\n\n        this.showMenu(column, event)\n    },\n\n    showMenu: function(column, event){\n\n        var menuItem = function(column){\n            return {\n                cls     : column.visible?'z-selected': '',\n                selected: column.visible? '✓': '',\n                label   : column.title,\n                fn      : this.toggleColumn.bind(this, column)\n            }\n        }.bind(this)\n\n        function menu(eventTarget, props){\n\n            var columns = props.gridColumns\n\n            props.columns = [ 'selected', 'label']\n            props.items = columns.map(menuItem)\n            props.alignTo = eventTarget\n            props.alignPositions = [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ]\n            props.style = {\n                position: 'absolute'\n            }\n\n            var factory = this.props.columnMenuFactory || ReactMenu\n\n            var result = factory(props)\n\n            return result === undefined?\n                    ReactMenu(props):\n                    result\n        }\n\n        this.props.showMenu(menu.bind(this, event.target), {\n            menuColumn: column.name\n        })\n    },\n\n    showFilterMenu: function(column, event){\n\n        function menu(eventTarget, props){\n\n            var defaultFactory = this.props.filterMenuFactory\n            var factory = column.filterMenuFactory || defaultFactory\n\n            props.columns = ['component']\n            props.column = column\n            props.alignTo = eventTarget\n            props.alignPositions = [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ]\n            props.style = {\n                position: 'absolute'\n            }\n\n            var result = factory(props)\n\n            return result === undefined?\n                        defaultFactory(props):\n                        result\n        }\n\n        this.props.showMenu(menu.bind(this, event.target), {\n            menuColumn: column.name\n        })\n    },\n\n    toggleColumn: function(column){\n        this.props.toggleColumn(column)\n    },\n\n    hideMenu: function(){\n        this.props.showColumnMenu(null, null)\n    },\n\n    handleResizeMouseDown: function(column, event){\n        setupColumnResize(this, this.props, column, event)\n\n        //in order to prevent setupColumnDrag in handleMouseDown\n        // event.stopPropagation()\n\n        //we are doing setupColumnDrag protection using the resizing flag on native event\n        if (event.nativeEvent){\n            event.nativeEvent.resizing = true\n        }\n    },\n\n    handleFilterMouseUp: function(column, event){\n        event.nativeEvent.stopSort = true\n\n        this.showFilterMenu(column, event)\n        // event.stopPropagation()\n    },\n\n    handleMouseUp: function(column, event){\n        if (this.state.dragging){\n            return\n        }\n\n        if (event && event.nativeEvent && event.nativeEvent.stopSort){\n            return\n        }\n\n        if (column.sortable){\n            this.toggleSort(column)\n        }\n    },\n\n    handleMouseOut: function(column){\n        this.setState({\n            mouseOver: false\n        })\n    },\n\n    handleMouseOver: function(column){\n        this.setState({\n            mouseOver: column.name\n        })\n    },\n\n    handleMouseDown: function(column, event){\n        if (event && event.nativeEvent && event.nativeEvent.resizing){\n            return\n        }\n\n        setupColumnDrag(this, this.props, column, event)\n    },\n\n    onResizeDragStart: function(config){\n        this.props.onColumnResizeDragStart(config)\n    },\n\n    onResizeDrag: function(config){\n        this.props.onColumnResizeDrag(config)\n    },\n\n    onResizeDrop: function(config, resizeInfo){\n        this.props.onColumnResizeDrop(config, resizeInfo)\n    },\n\n    prepareProps: function(thisProps){\n        var props = {}\n\n        assign(props, thisProps)\n\n        this.prepareClassName(props)\n        this.prepareStyle(props)\n\n        return props\n    },\n\n    prepareClassName: function(props){\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        if (this.state.dragging){\n            props.className += ' ' + props.draggingClassName\n        }\n    },\n\n    prepareStyle: function(props){\n        var style = props.style = {}\n\n        assign(style, props.defaultStyle)\n    }\n})\n"
        },
        {
          "id": 14,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/object-assign/index.js",
          "name": "./~/object-assign/index.js",
          "size": 484,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 45,
            "building": 290
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:15-39"
            },
            {
              "moduleId": 2,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
              "module": "./src/models/Column.js",
              "moduleName": "./src/models/Column.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:15-39"
            },
            {
              "moduleId": 9,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
              "module": "./src/RowSelect.js",
              "moduleName": "./src/RowSelect.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:13-37"
            },
            {
              "moduleId": 10,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
              "module": "./src/ColumnFilter.js",
              "moduleName": "./src/ColumnFilter.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:13-37"
            },
            {
              "moduleId": 12,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
              "module": "./src/Wrapper/index.jsx",
              "moduleName": "./src/Wrapper/index.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "6:14-38"
            },
            {
              "moduleId": 19,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
              "module": "./src/render/renderRow.jsx",
              "moduleName": "./src/render/renderRow.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:13-37"
            },
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "5:18-42"
            },
            {
              "moduleId": 26,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
              "module": "./src/Cell/index.jsx",
              "moduleName": "./src/Cell/index.jsx",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            }
          ],
          "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
        },
        {
          "id": 15,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
          "name": "./~/region/index.js",
          "size": 33,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 45,
            "building": 289
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "6:15-32"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "4:14-31"
            },
            {
              "moduleId": 23,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
              "module": "./src/Header/setupColumnDrag.js",
              "moduleName": "./src/Header/setupColumnDrag.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:17-34"
            },
            {
              "moduleId": 24,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
              "module": "./src/Header/setupColumnResize.js",
              "moduleName": "./src/Header/setupColumnResize.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:17-34"
            },
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "4:18-35"
            },
            {
              "moduleId": 60,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
              "module": "./~/region-align/index.js",
              "moduleName": "./~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 73,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.static.js",
              "module": "./~/region-align/Region.static.js",
              "moduleName": "./~/region-align/Region.static.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 74,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.proto.js",
              "module": "./~/region-align/Region.proto.js",
              "moduleName": "./~/region-align/Region.proto.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 75,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
              "module": "./~/region-align/computeAlignRegion.js",
              "moduleName": "./~/region-align/computeAlignRegion.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "5:13-30"
            },
            {
              "moduleId": 103,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/alignToNormalized.js",
              "module": "./~/region-align/alignToNormalized.js",
              "moduleName": "./~/region-align/alignToNormalized.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            }
          ],
          "source": "module.exports = require('./src')"
        },
        {
          "id": 16,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "name": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "size": 1105,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "profile": {
            "factory": 49,
            "building": 307,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
              "module": "./src/index.jsx",
              "moduleName": "./src/index.jsx",
              "type": "cjs require",
              "userRequest": "react-load-mask",
              "loc": "5:15-41"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\nvar Loader = require('./Loader')\n\nmodule.exports = React.createClass({\n\n    displayName: 'LoadMask',\n\n    getDefaultProps: function(){\n\n        return {\n            visibleDisplayValue: 'block',\n            defaultStyle: {\n                position: 'absolute',\n                width   : '100%',\n                height  : '100%',\n                display : 'none',\n                top: 0,\n                left: 0\n            }\n        }\n    },\n\n    render: function(){\n        var props = assign({}, this.props)\n\n        this.prepareStyle(props)\n\n        props.className = props.className || ''\n        props.className += ' loadmask'\n\n        return React.DOM.div(props, React.createElement(Loader, {size: props.size}))\n    },\n\n    prepareStyle: function(props){\n\n        var style = {}\n\n        assign(style, props.defaultStyle)\n        assign(style, props.style)\n\n        style.display = props.visible?\n                        props.visibleDisplayValue:\n                        'none'\n\n        props.style = style\n    }\n})"
        },
        {
          "id": 17,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexBy.js",
          "name": "./src/utils/findIndexBy.js",
          "size": 232,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "profile": {
            "factory": 27,
            "building": 28
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 4,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexByName.js",
              "module": "./src/utils/findIndexByName.js",
              "moduleName": "./src/utils/findIndexByName.js",
              "type": "cjs require",
              "userRequest": "./findIndexBy",
              "loc": "3:17-41"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "../utils/findIndexBy",
              "loc": "9:18-49"
            }
          ],
          "source": "'use strict';\n\nfunction findIndexBy(arr, fn){\n\n    var i   = 0\n    var len = arr.length\n\n    for (; i < len; i++){\n        if (fn(arr[i]) === true){\n            return i\n        }\n    }\n\n    return -1\n}\n\nmodule.exports = findIndexBy"
        },
        {
          "id": 18,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderMenu.jsx",
          "name": "./src/render/renderMenu.jsx",
          "size": 239,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "profile": {
            "factory": 238,
            "building": 39
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 7,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
              "module": "./src/render/renderTable.jsx",
              "moduleName": "./src/render/renderTable.jsx",
              "type": "cjs require",
              "userRequest": "./renderMenu",
              "loc": "4:17-40"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nmodule.exports = function renderMenu(props){\n    if (!props.menu){\n        return\n    }\n\n    return props.menu({\n        className : 'z-header-menu-column',\n        gridColumns: props.allColumns\n    })\n}"
        },
        {
          "id": 19,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
          "name": "./src/render/renderRow.jsx",
          "size": 2395,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "profile": {
            "factory": 238,
            "building": 34,
            "dependencies": 2
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 7,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
              "module": "./src/render/renderTable.jsx",
              "moduleName": "./src/render/renderTable.jsx",
              "type": "cjs require",
              "userRequest": "./renderRow",
              "loc": "5:17-39"
            },
            {
              "moduleId": 8,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
              "module": "./src/render/getGroupedRows.jsx",
              "moduleName": "./src/render/getGroupedRows.jsx",
              "type": "cjs require",
              "userRequest": "./renderRow",
              "loc": "9:16-38"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar assign = require('object-assign')\n\nvar Row        = require('../Row')\nvar RowFactory = React.createFactory(Row)\n\n/**\n * Render a datagrid row\n *\n * @param  {Object}   props The props from which to build row props\n * @param  {Object}   data The data object that backs this row\n * @param  {Number}   index The index in the grid of the row to be rendered\n * @param  {Function} [fn] A function that can be used to modify built row props\n *\n * If props.rowFactory is specified, it will be used to build the ReactElement\n * corresponding to this row. In case it returns undefined, the default RowFactory will be used\n * (this case occurs when the rowFactory was specified just to modify the row props)\n *\n * @return {ReactElement}\n */\nmodule.exports = function renderRow(props, data, index, fn){\n    var factory  = props.rowFactory || RowFactory\n    var key      = data[props.idProperty]\n\n    var selected = false\n\n    if (typeof props.selected == 'object' && props.selected){\n        selected = !!props.selected[key]\n    } else if (props.selected){\n        selected = key === props.selected\n    }\n\n    var config = {\n        className: index % 2 === 0? 'z-even': 'z-odd',\n        selected : selected,\n\n        key      : key,\n        data     : data,\n        index    : index,\n\n        cellFactory: props.cellFactory,\n        renderCell : props.renderCell,\n        renderText : props.renderText,\n        cellPadding: props.cellPadding,\n        rowHeight  : props.rowHeight,\n        columns    : props.columns,\n\n        rowContextMenu: props.rowContextMenu,\n        showMenu: props.showMenu,\n\n        _onClick: props.onRowClick\n    }\n\n    var style\n    var rowStyle = props.rowStyle\n\n    if (rowStyle){\n        style = {}\n\n        if (typeof rowStyle == 'function'){\n            style = rowStyle(data, config)\n        } else {\n            assign(style, rowStyle)\n        }\n\n        config.style = style\n    }\n\n    var className = props.rowClassName\n\n    if (typeof className == 'function'){\n        className = className(data, config)\n    }\n\n    if (className){\n        config.className = className\n    }\n\n    if (typeof fn == 'function'){\n        config = fn(config)\n    }\n\n    var row = factory(config)\n\n    if (row === undefined){\n        row = RowFactory(config)\n    }\n\n    if (config.selected && this){\n        this.selIndex = index\n    }\n\n    return row\n}"
        },
        {
          "id": 20,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/render/tableStyle.js",
          "name": "./src/render/tableStyle.js",
          "size": 272,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "profile": {
            "factory": 239,
            "building": 38
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 7,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
              "module": "./src/render/renderTable.jsx",
              "moduleName": "./src/render/renderTable.jsx",
              "type": "cjs require",
              "userRequest": "./tableStyle",
              "loc": "6:18-41"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function(props){\n    var scrollTop  = props.virtualRendering?\n                        0:\n                        props.scrollTop\n\n    return {\n        transform: 'translate3d(' + -props.scrollLeft + 'px, ' + -scrollTop + 'px, 0px)'\n    }\n}\n"
        },
        {
          "id": 21,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/getSelected.js",
          "name": "./src/getSelected.js",
          "size": 232,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
          "profile": {
            "factory": 173,
            "building": 39
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 9,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
              "module": "./src/RowSelect.js",
              "moduleName": "./src/RowSelect.js",
              "type": "cjs require",
              "userRequest": "./getSelected",
              "loc": "4:18-42"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function(props, state){\n    var selected = props.selected == null?\n                        state.defaultSelected\n                        :\n                        props.selected\n\n    return selected\n}"
        },
        {
          "id": 22,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/asArray.js",
          "name": "./src/utils/asArray.js",
          "size": 153,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "profile": {
            "factory": 34,
            "building": 40
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "../utils/asArray",
              "loc": "8:14-41"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function asArray(x){\n    if (!x){\n        x = []\n    }\n\n    if (!Array.isArray(x)){\n        x = [x]\n    }\n\n    return x\n}"
        },
        {
          "id": 23,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
          "name": "./src/Header/setupColumnDrag.js",
          "size": 3872,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "profile": {
            "factory": 33,
            "building": 51,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "./setupColumnDrag",
              "loc": "12:24-52"
            }
          ],
          "source": "'use strict';\n\nvar Region     = require('region')\nvar DragHelper = require('drag-helper')\n\nfunction range(start, end){\n    var res = []\n\n    for ( ; start <= end; start++){\n        res.push(start)\n    }\n\n    return res\n}\n\nfunction buildIndexes(direction, index, dragIndex){\n    var indexes = direction < 0 ?\n                    range(index, dragIndex):\n                    range(dragIndex, index)\n\n    var result = {}\n\n    indexes.forEach(function(value){\n        result[value] = true\n    })\n\n    return result\n}\n\nmodule.exports = function(header, props, column, event){\n\n    event.preventDefault()\n\n    var headerNode   = header.getDOMNode()\n    var headerRegion = Region.from(headerNode)\n    var dragColumn = column\n    var dragColumnIndex\n    var columnData\n    var shiftRegion\n\n    DragHelper(event, {\n\n        constrainTo: headerRegion.expand({ top: true, bottom: true}),\n\n        onDragStart: function(event, config){\n\n            var columnHeaders = headerNode.querySelectorAll('.' + props.cellClassName)\n\n            columnData = props.columns.map(function(column, i){\n                var region = Region.from(columnHeaders[i])\n\n                if (column === dragColumn){\n                    dragColumnIndex = i\n                    shiftRegion = region.clone()\n                }\n\n                return {\n                    column: column,\n                    index: i,\n                    region: region\n                }\n            })\n\n            header.setState({\n                dragColumn: column,\n                dragging  : true\n            })\n\n            config.columnData = columnData\n\n        },\n        onDrag: function(event, config){\n            var diff = config.diff.left\n            var directionSign = diff < 0? -1: 1\n            var state = {\n                dragColumnIndex  : dragColumnIndex,\n                dragColumn  : dragColumn,\n                dragLeft    : diff,\n                dropIndex   : null,\n                shiftIndexes: null,\n                shiftSize   : null\n            }\n\n            var shift\n            var shiftSize\n            var newLeft   = shiftRegion.left + diff\n            var newRight  = newLeft + shiftRegion.width\n            var shiftZone = { left: newLeft, right: newRight}\n\n            config.columnData.forEach(function(columnData, index, arr){\n\n                var itColumn = columnData.column\n                var itRegion = columnData.region\n\n                if (shift || itColumn === dragColumn){\n                    return\n                }\n\n                var itLeft  = itRegion.left\n                var itRight = itRegion.right\n                var itZone  = directionSign == -1?\n                            { left: itLeft, right: itLeft + itRegion.width }:\n                            { left: itRight - itRegion.width, right: itRight }\n\n                if (shiftRegion.width < itRegion.width){\n                    //shift region is smaller than itRegion\n                    shift = Region.getIntersectionWidth(\n                            itZone,\n                            shiftZone\n                        ) >= Math.min(\n                            itRegion.width,\n                            shiftRegion.width\n                        ) / 2\n\n                } else {\n                    //shift region is bigger than itRegion\n                    shift = Region.getIntersectionWidth(itRegion, shiftZone) >= itRegion.width / 2\n                }\n\n                if (shift) {\n                    shiftSize = -directionSign * shiftRegion.width\n                    state.dropIndex = index\n                    state.shiftIndexes = buildIndexes(directionSign, index, dragColumnIndex)\n                    state.shiftSize = shiftSize\n                }\n            })\n\n            header.setState(state)\n        },\n\n        onDrop: function(event){\n            header.onDrop(event)\n        }\n    })\n}"
        },
        {
          "id": 24,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
          "name": "./src/Header/setupColumnResize.js",
          "size": 2646,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "profile": {
            "factory": 32,
            "building": 68,
            "dependencies": 224
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "./setupColumnResize",
              "loc": "13:24-54"
            }
          ],
          "source": "'use strict';\n\nvar Region     = require('region')\nvar DragHelper = require('drag-helper')\n\nvar findIndexByName = require('../utils/findIndexByName')\n\nmodule.exports = function(header, props, column, event){\n\n    // event.stopPropagation()\n    event.preventDefault()\n\n    var columns = props.columns\n    var index = findIndexByName(columns, column.name)\n    var proxyLeft = Region.from(event.target).right\n\n    var headerNode = header.getDOMNode()\n\n    var constrainTo = Region.from(headerNode)\n\n    DragHelper(event, {\n        constrainTo: constrainTo,\n\n        onDragStart: function(event, config){\n\n            header.onResizeDragStart({\n                resizing       : true,\n                resizeColumn   : column,\n                resizeProxyLeft: proxyLeft\n            })\n        },\n\n        onDrag: function(event, config){\n            var diff = config.diff.left\n\n            header.onResizeDrag({\n                resizeProxyDiff: diff\n            })\n        },\n\n        onDrop: function(event, config){\n\n            var diff = config.diff.left\n            var columnHeaders = headerNode.querySelectorAll('.' + props.cellClassName)\n            var nextColumn    = diff > 0?\n                                    null:\n                                    columns[index + 1]\n\n            var columnSize = Region.from(columnHeaders[index]).width\n            var nextColumnSize\n            var firstSize  = columnSize + diff\n            var secondSize = 0\n\n            if (firstSize < column.minWidth){\n                firstSize = column.minWidth\n                diff = firstSize - columnSize\n            }\n\n            if (nextColumn){\n                nextColumnSize = nextColumn?\n                                        Region.from(columnHeaders[ index + 1]).width\n                                        : 0\n\n                secondSize = nextColumnSize - diff\n\n            }\n\n            if (nextColumn && secondSize < nextColumn.minWidth){\n                secondSize = nextColumn.minWidth\n                diff = nextColumnSize - secondSize\n                firstSize = columnSize + diff\n            }\n\n            var resizeInfo = [{\n                name: column.name,\n                size: firstSize,\n                diff: diff\n            }]\n\n            if (nextColumn){\n                resizeInfo.push({\n                    name: nextColumn.name,\n                    size: secondSize,\n                    diff: -diff\n                })\n            }\n\n            header.onResizeDrop({\n                resizing: false,\n                resizeColumn: null,\n                resizeProxyLeft: null\n            }, resizeInfo)\n        }\n    })\n}"
        },
        {
          "id": 25,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "name": "./src/Row/index.jsx",
          "size": 4840,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "profile": {
            "factory": 222,
            "building": 97,
            "dependencies": 33
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 8,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
              "module": "./src/render/getGroupedRows.jsx",
              "moduleName": "./src/render/getGroupedRows.jsx",
              "type": "cjs require",
              "userRequest": "../Row",
              "loc": "5:18-35"
            },
            {
              "moduleId": 19,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
              "module": "./src/render/renderRow.jsx",
              "moduleName": "./src/render/renderRow.jsx",
              "type": "cjs require",
              "userRequest": "../Row",
              "loc": "5:17-34"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React       = require('react')\nvar Region      = require('region')\nvar assign      = require('object-assign')\nvar Cell        = require('../Cell')\nvar CellFactory = React.createFactory(Cell)\nvar ReactMenu = require('react-menus')\nvar ReactMenuFactory = React.createFactory(ReactMenu)\nvar prefixer  = require('react-prefixr')\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Row',\n\n    propTypes: {\n        data   : React.PropTypes.object,\n        columns: React.PropTypes.array,\n        index  : React.PropTypes.number\n    },\n\n    getDefaultProps: function(){\n\n        return {\n            defaultClassName  : 'z-row',\n            mouseOverClassName: 'z-over',\n            selectedClassName : 'z-selected',\n            defaultStyle      : prefixer({\n                userSelect: 'none'\n            })\n        }\n    },\n\n    getInitialState: function(){\n        return {\n            mouseOver: false\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props)\n        var cells = props.children || props.columns\n                                        .map(this.renderCell.bind(this, this.props))\n\n        return React.createElement(\"div\", React.__spread({},  props), cells)\n    },\n\n    prepareProps: function(thisProps){\n        var props = assign({}, thisProps)\n\n        props.className = this.prepareClassName(props, this.state)\n        props.style = this.prepareStyle(props)\n\n        props.onMouseEnter = this.handleMouseEnter\n        props.onMouseLeave = this.handleMouseLeave\n        props.onContextMenu = this.handleContextMenu\n        props.onClick = this.handleRowClick\n\n        delete props.data\n        delete props.cellPadding\n\n        return props\n    },\n\n    handleRowClick: function(event){\n\n        if (this.props.onClick){\n            this.props.onClick(event)\n        }\n\n        if (this.props._onClick){\n            this.props._onClick(this.props, event)\n        }\n    },\n\n    handleContextMenu: function(event){\n\n        if (this.props.rowContextMenu){\n            this.showMenu(event)\n        }\n\n        if (this.props.onContextMenu){\n            this.props.onContextMenu(event)\n        }\n    },\n\n    showMenu: function(event){\n        var factory = this.props.rowContextMenu\n        var alignTo = Region.from(event)\n\n        var props = {\n            style: {\n                position: 'absolute'\n            },\n            rowProps: this.props,\n            data    : this.props.data,\n            alignTo : alignTo,\n            alignPositions: [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ],\n            items: [\n                {\n                    label: 'stop'\n                }\n            ]\n        }\n\n        var menu = factory(props)\n\n        if (menu === undefined){\n            menu = ReactMenuFactory(props)\n        }\n\n        event.preventDefault()\n\n        this.props.showMenu(function(){\n            return menu\n        })\n    },\n\n    handleMouseLeave: function(event){\n        this.setState({\n            mouseOver: false\n        })\n\n        if (this.props.onMouseLeave){\n            this.props.onMouseLeave(event)\n        }\n    },\n\n    handleMouseEnter: function(event){\n        this.setState({\n            mouseOver: true\n        })\n\n        if (this.props.onMouseEnter){\n            this.props.onMouseEnter(event)\n        }\n    },\n\n    renderCell: function(props, column, index){\n\n        var text = props.data[column.name]\n\n        var cellProps = {\n            key        : column.name,\n            name       : column.name,\n            data       : props.data,\n            columns    : props.columns,\n            index      : index,\n            rowIndex   : props.index,\n            textPadding: props.cellPadding,\n            renderCell : props.renderCell,\n            renderText : props.renderText\n        }\n\n        if (typeof column.render == 'function'){\n            text = column.render(text, props.data, cellProps)\n        }\n\n        cellProps.text = text\n\n        var result\n\n        if (props.cellFactory){\n            result = props.cellFactory(cellProps)\n        }\n\n        if (result === undefined){\n            result = CellFactory(cellProps)\n        }\n\n        return result\n    },\n\n    prepareClassName: function(props, state){\n        var className = props.className || ''\n\n        className += ' ' + props.defaultClassName\n\n        if (state.mouseOver){\n            className += ' ' + props.mouseOverClassName\n        }\n\n        if (props.selected){\n            className += ' ' + props.selectedClassName\n        }\n\n        return className\n    },\n\n    prepareStyle: function(props){\n\n        var style = assign({}, props.defaultStyle, props.style)\n\n        style.height = props.rowHeight\n\n        return style\n    }\n})\n"
        },
        {
          "id": 26,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
          "name": "./src/Cell/index.jsx",
          "size": 2261,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "profile": {
            "factory": 222,
            "building": 119,
            "dependencies": 23
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 8,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
              "module": "./src/render/getGroupedRows.jsx",
              "moduleName": "./src/render/getGroupedRows.jsx",
              "type": "cjs require",
              "userRequest": "../Cell",
              "loc": "6:18-36"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "../Cell",
              "loc": "11:14-32"
            },
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "../Cell",
              "loc": "6:18-36"
            }
          ],
          "source": "/** @jsx React.DOM */'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nfunction copyProps(target, source, list){\n\n    list.forEach(function(name){\n        if (name in source){\n            target[name] = source[name]\n        }\n    })\n\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Cell',\n\n    propTypes: {\n        className  : React.PropTypes.string,\n        textPadding: React.PropTypes.number,\n        style      : React.PropTypes.object,\n        text       : React.PropTypes.any,\n        rowIndex   : React.PropTypes.number\n    },\n\n    getDefaultProps: function(){\n        return {\n            text: '',\n            defaultClassName: 'z-cell'\n        }\n    },\n\n    render: function(){\n        var props     = this.props\n\n        var columns   = props.columns\n        var index     = props.index\n        var column    = columns? columns[index]: null\n        var className = props.className || ''\n        var text      = props.renderText?\n                            props.renderText(props.text, column, props.rowIndex):\n                            props.text\n\n        var textCellProps = {\n            className: 'z-text',\n            style    : {padding: props.textPadding}\n        }\n\n        var textCell = props.renderCell?\n                            props.renderCell(textCellProps, text, props):\n                            React.DOM.div(textCellProps, text)\n\n        if (!index){\n            className += ' z-first'\n        }\n        if (columns && index == columns.length - 1){\n            className += ' z-last'\n        }\n\n        className += ' ' + props.defaultClassName\n\n        var cellProps = {\n            className: className,\n            style    : assign({}, props.style, column? column.style: null)\n        }\n\n        copyProps(cellProps, props, [\n            'onMouseOver',\n            'onMouseOut',\n            'onClick',\n            'onMouseDown',\n            'onMouseUp'\n        ])\n\n        return (\n            React.createElement(\"div\", React.__spread({},  cellProps), \n                React.createElement(\"div\", {className: \"z-inner\", style: props.innerStyle}, \n                    textCell\n                ), \n                props.children\n            )\n        )\n    }\n})"
        },
        {
          "id": 27,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "name": "./~/ustring/index.js",
          "size": 524,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
          "profile": {
            "factory": 300,
            "building": 125
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 2,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
              "module": "./src/models/Column.js",
              "moduleName": "./src/models/Column.js",
              "type": "cjs require",
              "userRequest": "ustring",
              "loc": "3:15-33"
            }
          ],
          "source": "module.exports = {\n    toLowerFirst     : require('./src/toLowerFirst'),\n    toUpperFirst     : require('./src/toUpperFirst'),\n    separate         : require('./src/separate'),\n    stripWhitespace  : require('./src/stripWhitespace'),\n    compactWhitespace: require('./src/compactWhitespace'),\n    camelize         : require('./src/camelize'),\n    humanize         : require('./src/humanize'),\n    hyphenate        : require('./src/hyphenate'),\n    endsWith         : require('./src/endsWith'),\n\n    is: require('./src/is')\n}"
        },
        {
          "id": 28,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/hasown/index.js",
          "name": "./~/hasown/index.js",
          "size": 700,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
          "profile": {
            "factory": 266,
            "building": 130
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 5,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
              "module": "./src/utils/group.js",
              "moduleName": "./src/utils/group.js",
              "type": "cjs require",
              "userRequest": "hasown",
              "loc": "3:13-30"
            },
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "hasown",
              "loc": "3:16-33"
            },
            {
              "moduleId": 35,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
              "module": "./~/region/src/statics.js",
              "moduleName": "./~/region/src/statics.js",
              "type": "cjs require",
              "userRequest": "hasown",
              "loc": "3:15-32"
            }
          ],
          "source": "'use strict'\n\nvar hasOwn = Object.prototype.hasOwnProperty\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\n\nmodule.exports = curry(function(object, property){\n    return hasOwn.call(object, property)\n})"
        },
        {
          "id": 29,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "name": "./~/region/src/index.js",
          "size": 27185,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
          "profile": {
            "factory": 82,
            "building": 160,
            "dependencies": 77
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 15,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
              "module": "./~/region/index.js",
              "moduleName": "./~/region/index.js",
              "type": "cjs require",
              "userRequest": "./src",
              "loc": "1:17-33"
            }
          ],
          "source": "'use strict';\n\nvar hasOwn    = require('hasown')\nvar newify    = require('newify')\nvar copyUtils = require('copy-utils')\nvar copyList  = copyUtils.copyList\nvar copy      = copyUtils.copy\nvar isObject  = require('i-s').object\nvar EventEmitter = require('events').EventEmitter\nvar inherits = require('./inherits')\nvar VALIDATE = require('./validate')\n\n/**\n * @class Region\n *\n * The Region is an abstraction that allows the developer to refer to rectangles on the screen,\n * and move them around, make diffs and unions, detect intersections, compute areas, etc.\n *\n * ## Creating a region\n *      var region = require('region')({\n *          top  : 10,\n *          left : 10,\n *          bottom: 100,\n *          right : 100\n *      })\n *      //this region is a square, 90x90, starting from (10,10) to (100,100)\n *\n *      var second = require('region')({ top: 10, left: 100, right: 200, bottom: 60})\n *      var union  = region.getUnion(second)\n *\n *      //the \"union\" region is a union between \"region\" and \"second\"\n */\n\nvar POINT_POSITIONS = {\n        cy: 'YCenter',\n        cx: 'XCenter',\n        t : 'Top',\n        tc: 'TopCenter',\n        tl: 'TopLeft',\n        tr: 'TopRight',\n        b : 'Bottom',\n        bc: 'BottomCenter',\n        bl: 'BottomLeft',\n        br: 'BottomRight',\n        l : 'Left',\n        lc: 'LeftCenter',\n        r : 'Right',\n        rc: 'RightCenter',\n        c : 'Center'\n    }\n\n/**\n * @constructor\n *\n * Construct a new Region.\n *\n * Example:\n *\n *      var r = new Region({ top: 10, left: 20, bottom: 100, right: 200 })\n *\n *      //or, the same, but with numbers (can be used with new or without)\n *\n *      r = Region(10, 200, 100, 20)\n *\n *      //or, with width and height\n *\n *      r = Region({ top: 10, left: 20, width: 180, height: 90})\n *\n * @param {Number|Object} top The top pixel position, or an object with top, left, bottom, right properties. If an object is passed,\n * instead of having bottom and right, it can have width and height.\n *\n * @param {Number} right The right pixel position\n * @param {Number} bottom The bottom pixel position\n * @param {Number} left The left pixel position\n *\n * @return {Region} this\n */\nvar REGION = function(top, right, bottom, left){\n\n    if (!(this instanceof REGION)){\n        return newify(REGION, arguments)\n    }\n\n    EventEmitter.call(this)\n\n    if (isObject(top)){\n        copyList(top, this, ['top','right','bottom','left'])\n\n        if (top.bottom == null && top.height != null){\n            this.bottom = this.top + top.height\n        }\n        if (top.right == null && top.width != null){\n            this.right = this.left + top.width\n        }\n\n        if (top.emitChangeEvents){\n            this.emitChangeEvents = top.emitChangeEvents\n        }\n    } else {\n        this.top    = top\n        this.right  = right\n        this.bottom = bottom\n        this.left   = left\n    }\n\n    this[0] = this.left\n    this[1] = this.top\n\n    VALIDATE(this)\n}\n\ninherits(REGION, EventEmitter)\n\ncopy({\n\n    /**\n     * @cfg {Boolean} emitChangeEvents If this is set to true, the region\n     * will emit 'changesize' and 'changeposition' whenever the size or the position changs\n     */\n    emitChangeEvents: false,\n\n    /**\n     * Returns this region, or a clone of this region\n     * @param  {Boolean} [clone] If true, this method will return a clone of this region\n     * @return {Region}       This region, or a clone of this\n     */\n    getRegion: function(clone){\n        return clone?\n                    this.clone():\n                    this\n    },\n\n    /**\n     * Sets the properties of this region to those of the given region\n     * @param {Region/Object} reg The region or object to use for setting properties of this region\n     * @return {Region} this\n     */\n    setRegion: function(reg){\n\n        if (reg instanceof REGION){\n            this.set(reg.get())\n        } else {\n            this.set(reg)\n        }\n\n        return this\n    },\n\n    /**\n     * Returns true if this region is valid, false otherwise\n     *\n     * @param  {Region} region The region to check\n     * @return {Boolean}        True, if the region is valid, false otherwise.\n     * A region is valid if\n     *  * left <= right  &&\n     *  * top  <= bottom\n     */\n    validate: function(){\n        return REGION.validate(this)\n    },\n\n    _before: function(){\n        if (this.emitChangeEvents){\n            return copyList(this, {}, ['left','top','bottom','right'])\n        }\n    },\n\n    _after: function(before){\n        if (this.emitChangeEvents){\n\n            if(this.top != before.top || this.left != before.left) {\n                this.emitPositionChange()\n            }\n\n            if(this.right != before.right || this.bottom != before.bottom) {\n                this.emitSizeChange()\n            }\n        }\n    },\n\n    notifyPositionChange: function(){\n        this.emit('changeposition', this)\n    },\n\n    emitPositionChange: function(){\n        this.notifyPositionChange()\n    },\n\n    notifySizeChange: function(){\n        this.emit('changesize', this)\n    },\n\n    emitSizeChange: function(){\n        this.notifySizeChange()\n    },\n\n    /**\n     * Add the given amounts to each specified side. Example\n     *\n     *      region.add({\n     *          top: 50,    //add 50 px to the top side\n     *          bottom: -100    //substract 100 px from the bottom side\n     *      })\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    add: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            this[direction] += directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * The same as {@link #add}, but substracts the given values\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    substract: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if (hasOwn(directions, direction) ) {\n            this[direction] -= directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the size of the region.\n     * @return {Object} An object with {width, height}, corresponding to the width and height of the region\n     */\n    getSize: function(){\n        return {\n            width  : this.width,\n            height : this.height\n        }\n    },\n\n    /**\n     * Move the region to the given position and keeps the region width and height.\n     *\n     * @param {Object} position An object with {top, left} properties. The values in {top,left} are used to move the region by the given amounts.\n     * @param {Number} [position.left]\n     * @param {Number} [position.top]\n     *\n     * @return {Region} this\n     */\n    setPosition: function(position){\n        var width  = this.width\n        var height = this.height\n\n        if (position.left != undefined){\n            position.right  = position.left + width\n        }\n\n        if (position.top != undefined){\n            position.bottom = position.top  + height\n        }\n\n        return this.set(position)\n    },\n\n    /**\n     * Sets both the height and the width of this region to the given size.\n     *\n     * @param {Number} size The new size for the region\n     * @return {Region} this\n     */\n    setSize: function(size){\n        if (size.height != undefined && size.width != undefined){\n            return this.set({\n                right  : this.left + size.width,\n                bottom : this.top  + size.height\n            })\n        }\n\n        if (size.width != undefined){\n            this.setWidth(size.width)\n        }\n\n        if (size.height != undefined){\n            this.setHeight(size.height)\n        }\n\n        return this\n    },\n\n\n\n    /**\n     * @chainable\n     *\n     * Sets the width of this region\n     * @param {Number} width The new width for this region\n     * @return {Region} this\n     */\n    setWidth: function(width){\n        return this.set({\n            right: this.left + width\n        })\n    },\n\n    /**\n     * @chainable\n     *\n     * Sets the height of this region\n     * @param {Number} height The new height for this region\n     * @return {Region} this\n     */\n    setHeight: function(height){\n        return this.set({\n            bottom: this.top + height\n        })\n    },\n\n    /**\n     * Sets the given properties on this region\n     *\n     * @param {Object} directions an object containing top, left, and EITHER bottom, right OR width, height\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @param {Number} [directions.width]\n     * @param {Number} [directions.height]\n     *\n     *\n     * @return {Region} this\n     */\n    set: function(directions){\n        var before = this._before()\n\n        copyList(directions, this, ['left','top','bottom','right'])\n\n        if (directions.bottom == null && directions.height != null){\n            this.bottom = this.top + directions.height\n        }\n        if (directions.right == null && directions.width != null){\n            this.right = this.left + directions.width\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the given property from this region. If no property is given, return an object\n     * with {left, top, right, bottom}\n     *\n     * @param {String} [dir] the property to retrieve from this region\n     * @return {Number/Object}\n     */\n    get: function(dir){\n        return dir? this[dir]:\n                    copyList(this, {}, ['left','right','top','bottom'])\n    },\n\n    /**\n     * Shifts this region to either top, or left or both.\n     * Shift is similar to {@link #add} by the fact that it adds the given dimensions to top/left sides, but also adds the given dimensions\n     * to bottom and right\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    shift: function(directions){\n\n        var before = this._before()\n\n        if (directions.top){\n            this.top    += directions.top\n            this.bottom += directions.top\n        }\n\n        if (directions.left){\n            this.left  += directions.left\n            this.right += directions.left\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Same as {@link #shift}, but substracts the given values\n     * @chainable\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    unshift: function(directions){\n\n        if (directions.top){\n            directions.top *= -1\n        }\n\n        if (directions.left){\n            directions.left *= -1\n        }\n\n        return this.shift(directions)\n    },\n\n    /**\n     * Compare this region and the given region. Return true if they have all the same size and position\n     * @param  {Region} region The region to compare with\n     * @return {Boolean}       True if this and region have same size and position\n     */\n    equals: function(region){\n        return this.equalsPosition(region) && this.equalsSize(region)\n    },\n\n    /**\n     * Returns true if this region has the same bottom,right properties as the given region\n     * @param  {Region/Object} size The region to compare against\n     * @return {Boolean}       true if this region is the same size as the given size\n     */\n    equalsSize: function(size){\n        var isInstance = size instanceof REGION\n\n        var s = {\n            width: size.width == null && isInstance?\n                    size.getWidth():\n                    size.width,\n\n            height: size.height == null && isInstance?\n                    size.getHeight():\n                    size.height\n        }\n        return this.getWidth() == s.width && this.getHeight() == s.height\n    },\n\n    /**\n     * Returns true if this region has the same top,left properties as the given region\n     * @param  {Region} region The region to compare against\n     * @return {Boolean}       true if this.top == region.top and this.left == region.left\n     */\n    equalsPosition: function(region){\n        return this.top == region.top && this.left == region.left\n    },\n\n    /**\n     * Adds the given ammount to the left side of this region\n     * @param {Number} left The ammount to add\n     * @return {Region} this\n     */\n    addLeft: function(left){\n        var before = this._before()\n\n        this.left = this[0] = this.left + left\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the top side of this region\n     * @param {Number} top The ammount to add\n     * @return {Region} this\n     */\n    addTop: function(top){\n        var before = this._before()\n\n        this.top = this[1] = this.top + top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the bottom side of this region\n     * @param {Number} bottom The ammount to add\n     * @return {Region} this\n     */\n    addBottom: function(bottom){\n        var before = this._before()\n\n        this.bottom += bottom\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the right side of this region\n     * @param {Number} right The ammount to add\n     * @return {Region} this\n     */\n    addRight: function(right){\n        var before = this._before()\n\n        this.right += right\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Minimize the top side.\n     * @return {Region} this\n     */\n    minTop: function(){\n        return this.expand({top: 1})\n    },\n    /**\n     * Minimize the bottom side.\n     * @return {Region} this\n     */\n    maxBottom: function(){\n        return this.expand({bottom: 1})\n    },\n    /**\n     * Minimize the left side.\n     * @return {Region} this\n     */\n    minLeft: function(){\n        return this.expand({left: 1})\n    },\n    /**\n     * Maximize the right side.\n     * @return {Region} this\n     */\n    maxRight: function(){\n        return this.expand({right: 1})\n    },\n\n    /**\n     * Expands this region to the dimensions of the given region, or the document region, if no region is expanded.\n     * But only expand the given sides (any of the four can be expanded).\n     *\n     * @param {Object} directions\n     * @param {Boolean} [directions.top]\n     * @param {Boolean} [directions.bottom]\n     * @param {Boolean} [directions.left]\n     * @param {Boolean} [directions.right]\n     *\n     * @param {Region} [region] the region to expand to, defaults to the document region\n     * @return {Region} this region\n     */\n    expand: function(directions, region){\n        var docRegion = region || REGION.getDocRegion()\n        var list      = []\n        var direction\n        var before = this._before()\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            list.push(direction)\n        }\n\n        copyList(docRegion, this, list)\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Returns a clone of this region\n     * @return {Region} A new region, with the same position and dimension as this region\n     */\n    clone: function(){\n        return new REGION({\n                    top    : this.top,\n                    left   : this.left,\n                    right  : this.right,\n                    bottom : this.bottom\n                })\n    },\n\n    /**\n     * Returns true if this region contains the given point\n     * @param {Number/Object} x the x coordinate of the point\n     * @param {Number} [y] the y coordinate of the point\n     *\n     * @return {Boolean} true if this region constains the given point, false otherwise\n     */\n    containsPoint: function(x, y){\n        if (arguments.length == 1){\n            y = x.y\n            x = x.x\n        }\n\n        return this.left <= x  &&\n               x <= this.right &&\n               this.top <= y   &&\n               y <= this.bottom\n    },\n\n    /**\n     *\n     * @param region\n     *\n     * @return {Boolean} true if this region contains the given region, false otherwise\n     */\n    containsRegion: function(region){\n        return this.containsPoint(region.left, region.top)    &&\n               this.containsPoint(region.right, region.bottom)\n    },\n\n    /**\n     * Returns an object with the difference for {top, bottom} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {top,bottom}\n     */\n    diffHeight: function(region){\n        return this.diff(region, {top: true, bottom: true})\n    },\n\n    /**\n     * Returns an object with the difference for {left, right} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {left,right}\n     */\n    diffWidth: function(region){\n        return this.diff(region, {left: true, right: true})\n    },\n\n    /**\n     * Returns an object with the difference in sizes for the given directions, between this and region\n     *\n     * @param  {Region} region     The region to use for diff\n     * @param  {Object} directions An object with the directions to diff. Can have any of the following keys:\n     *  * left\n     *  * right\n     *  * top\n     *  * bottom\n     *\n     * @return {Object} and object with the same keys as the directions object, but the values being the\n     * differences between this region and the given region\n     */\n    diff: function(region, directions){\n        var result = {}\n        var dirName\n\n        for (dirName in directions) if ( hasOwn(directions, dirName) ) {\n            result[dirName] = this[dirName] - region[dirName]\n        }\n\n        return result\n    },\n\n    /**\n     * Returns the position, in {left,top} properties, of this region\n     *\n     * @return {Object} {left,top}\n     */\n    getPosition: function(){\n        return {\n            left: this.left,\n            top : this.top\n        }\n    },\n\n    /**\n     * Returns the point at the given position from this region.\n     *\n     * @param {String} position Any of:\n     *\n     *  * 'cx' - See {@link #getPointXCenter}\n     *  * 'cy' - See {@link #getPointYCenter}\n     *  * 'b'  - See {@link #getPointBottom}\n     *  * 'bc' - See {@link #getPointBottomCenter}\n     *  * 'l'  - See {@link #getPointLeft}F\n     *  * 'lc' - See {@link #getPointLeftCenter}\n     *  * 't'  - See {@link #getPointTop}\n     *  * 'tc' - See {@link #getPointTopCenter}\n     *  * 'r'  - See {@link #getPointRight}\n     *  * 'rc' - See {@link #getPointRightCenter}\n     *  * 'c'  - See {@link #getPointCenter}\n     *  * 'tl' - See {@link #getPointTopLeft}\n     *  * 'bl' - See {@link #getPointBottomLeft}\n     *  * 'br' - See {@link #getPointBottomRight}\n     *  * 'tr' - See {@link #getPointTopRight}\n     *\n     * @param {Boolean} asLeftTop\n     *\n     * @return {Object} either an object with {x,y} or {left,top} if asLeftTop is true\n     */\n    getPoint: function(position, asLeftTop){\n\n        //<debug>\n        if (!POINT_POSITIONS[position]) {\n            console.warn('The position ', position, ' could not be found! Available options are tl, bl, tr, br, l, r, t, b.');\n        }\n        //</debug>\n\n        var method = 'getPoint' + POINT_POSITIONS[position],\n            result = this[method]()\n\n        if (asLeftTop){\n            return {\n                left : result.x,\n                top  : result.y\n            }\n        }\n\n        return result\n    },\n\n    /**\n     * Returns a point with x = null and y being the middle of the left region segment\n     * @return {Object} {x,y}\n     */\n    getPointYCenter: function(){\n        return { x: null, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x being the middle of the top region segment\n     * @return {Object} {x,y}\n     */\n    getPointXCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: null }\n    },\n\n    /**\n     * Returns a point with x = null and y the region top position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointTop: function(){\n        return { x: null, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region top segment\n     * @return {Object} {x,y}\n     */\n    getPointTopCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the top-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopLeft: function(){\n        return { x: this.left, y: this.top}\n    },\n\n    /**\n     * Returns a point that is the top-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopRight: function(){\n        return { x: this.right, y: this.top}\n    },\n\n    /**\n     * Returns a point with x = null and y the region bottom position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointBottom: function(){\n        return { x: null, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region bottom segment\n     * @return {Object} {x,y}\n     */\n    getPointBottomCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the bottom-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomLeft: function(){\n        return { x: this.left, y: this.bottom}\n    },\n\n    /**\n     * Returns a point that is the bottom-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomRight: function(){\n        return { x: this.right, y: this.bottom}\n    },\n\n    /**\n     * Returns a point with y = null and x the region left position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointLeft: function(){\n        return { x: this.left, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region left segment\n     * @return {Object} {x,y}\n     */\n    getPointLeftCenter: function(){\n        return { x: this.left, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x the region right position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointRight: function(){\n        return { x: this.right, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region right segment\n     * @return {Object} {x,y}\n     */\n    getPointRightCenter: function(){\n        return { x: this.right, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point that is the center of the region\n     * @return {Object} {x,y}\n     */\n    getPointCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * @return {Number} returns the height of the region\n     */\n    getHeight: function(){\n        return this.bottom - this.top\n    },\n\n    /**\n     * @return {Number} returns the width of the region\n     */\n    getWidth: function(){\n        return this.right - this.left\n    },\n\n    /**\n     * @return {Number} returns the top property of the region\n     */\n    getTop: function(){\n        return this.top\n    },\n\n    /**\n     * @return {Number} returns the left property of the region\n     */\n    getLeft: function(){\n        return this.left\n    },\n\n    /**\n     * @return {Number} returns the bottom property of the region\n     */\n    getBottom: function(){\n        return this.bottom\n    },\n\n    /**\n     * @return {Number} returns the right property of the region\n     */\n    getRight: function(){\n        return this.right\n    },\n\n    /**\n     * Returns the area of the region\n     * @return {Number} the computed area\n     */\n    getArea: function(){\n        return this.getWidth() * this.getHeight()\n    },\n\n    constrainTo: function(contrain){\n        var intersect = this.getIntersection(contrain)\n        var shift\n\n        if (!intersect || !intersect.equals(this)){\n\n            var contrainWidth  = contrain.getWidth(),\n                contrainHeight = contrain.getHeight()\n\n            if (this.getWidth() > contrainWidth){\n                this.left = contrain.left\n                this.setWidth(contrainWidth)\n            }\n\n            if (this.getHeight() > contrainHeight){\n                this.top = contrain.top\n                this.setHeight(contrainHeight)\n            }\n\n            shift = {}\n\n            if (this.right > contrain.right){\n                shift.left = contrain.right - this.right\n            }\n\n            if (this.bottom > contrain.bottom){\n                shift.top = contrain.bottom - this.bottom\n            }\n\n            if (this.left < contrain.left){\n                shift.left = contrain.left - this.left\n            }\n\n            if (this.top < contrain.top){\n                shift.top = contrain.top - this.top\n            }\n\n            this.shift(shift)\n\n            return true\n        }\n\n        return false\n    },\n\n    __IS_REGION: true\n\n    /**\n     * @property {Number} top\n     */\n\n    /**\n     * @property {Number} right\n     */\n\n    /**\n     * @property {Number} bottom\n     */\n\n    /**\n     * @property {Number} left\n     */\n\n    /**\n     * @property {Number} [0] the top property\n     */\n\n    /**\n     * @property {Number} [1] the left property\n     */\n\n    /**\n     * @method getIntersection\n     * Returns a region that is the intersection of this region and the given region\n     * @param  {Region} region The region to intersect with\n     * @return {Region}        The intersection region\n     */\n\n    /**\n     * @method getUnion\n     * Returns a region that is the union of this region with the given region\n     * @param  {Region} region  The region to make union with\n     * @return {Region}        The union region. The smallest region that contains both this and the given region.\n     */\n\n}, REGION.prototype)\n\nObject.defineProperties(REGION.prototype, {\n    width: {\n        get: function(){\n            return this.getWidth()\n        },\n        set: function(width){\n            return this.setWidth(width)\n        }\n    },\n    height: {\n        get: function(){\n            return this.getHeight()\n        },\n        set: function(height){\n            return this.setHeight(height)\n        }\n    }\n})\n\nrequire('./statics')(REGION)\n\nmodule.exports = REGION"
        },
        {
          "id": 30,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "name": "/usr/lib/~/react-menus/lib/index.js",
          "size": 350,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
          "profile": {
            "factory": 268,
            "building": 145
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 10,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
              "module": "./src/ColumnFilter.js",
              "moduleName": "./src/ColumnFilter.js",
              "type": "cjs require",
              "userRequest": "react-menus",
              "loc": "4:16-38"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "react-menus",
              "loc": "5:36-58"
            },
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "react-menus",
              "loc": "8:16-38"
            }
          ],
          "source": "'use strict';\n\nvar MenuClass = require('./Menu')\n\nvar MenuItem      = require('./MenuItem')\nvar MenuItemCell  = require('./MenuItemCell')\nvar MenuSeparator = require('./MenuSeparator')\n\nMenuClass.Item      = MenuItem\nMenuClass.Item.Cell = MenuItemCell\nMenuClass.ItemCell  = MenuItemCell\nMenuClass.Separator = MenuSeparator\n\nmodule.exports = MenuClass"
        },
        {
          "id": 31,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
          "name": "./~/clone/clone.js",
          "size": 3700,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "profile": {
            "factory": 162,
            "building": 164
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 13,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
              "module": "./src/Header/index.jsx",
              "moduleName": "./src/Header/index.jsx",
              "type": "cjs require",
              "userRequest": "clone",
              "loc": "7:14-30"
            }
          ],
          "source": "'use strict';\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n// shim for Node's 'util' package\n// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/).\nvar util = {\n  isArray: function (ar) {\n    return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]');\n  },\n  isDate: function (d) {\n    return typeof d === 'object' && objectToString(d) === '[object Date]';\n  },\n  isRegExp: function (re) {\n    return typeof re === 'object' && objectToString(re) === '[object RegExp]';\n  },\n  getRegExpFlags: function (re) {\n    var flags = '';\n    re.global && (flags += 'g');\n    re.ignoreCase && (flags += 'i');\n    re.multiline && (flags += 'm');\n    return flags;\n  }\n};\n\n\nif (typeof module === 'object')\n  module.exports = clone;\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n*/\n\nfunction clone(parent, circular, depth, prototype) {\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth == 0)\n      return parent;\n\n    var child;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (util.isArray(parent)) {\n      child = [];\n    } else if (util.isRegExp(parent)) {\n      child = new RegExp(parent.source, util.getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (util.isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      child = new Buffer(parent.length);\n      parent.copy(child);\n      return child;\n    } else {\n      if (typeof prototype == 'undefined') child = Object.create(Object.getPrototypeOf(parent));\n      else child = Object.create(prototype);\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    for (var i in parent) {\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n"
        },
        {
          "id": 32,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "name": "./~/drag-helper/index.js",
          "size": 4181,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
          "profile": {
            "factory": 240,
            "building": 129,
            "dependencies": 141
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 23,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
              "module": "./src/Header/setupColumnDrag.js",
              "moduleName": "./src/Header/setupColumnDrag.js",
              "type": "cjs require",
              "userRequest": "drag-helper",
              "loc": "4:17-39"
            },
            {
              "moduleId": 24,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
              "module": "./src/Header/setupColumnResize.js",
              "moduleName": "./src/Header/setupColumnResize.js",
              "type": "cjs require",
              "userRequest": "drag-helper",
              "loc": "4:17-39"
            }
          ],
          "source": "'use strict'\n\nvar F      = require('functionally')\nvar copy   = require('copy-utils').copy\nvar Region = require('region-align')\n\nvar Helper = function(config){\n    this.config = config\n}\n\nfunction emptyFn(){}\n\ncopy({\n\n    /**\n     * Should be called on a mousedown event\n     *\n     * @param  {Event} event\n     * @return {[type]}       [description]\n     */\n    initDrag: function(event) {\n\n        this.onDragInit(event)\n\n        var onDragStart = F.once(this.onDragStart, this)\n\n        var mouseMoveListener = (function(event){\n            onDragStart(event)\n            this.onDrag(event)\n        }).bind(this)\n\n        var mouseUpListener = (function(event){\n\n            this.onDrop(event)\n\n            window.removeEventListener('mousemove', mouseMoveListener)\n            window.removeEventListener('mouseup', mouseUpListener)\n        }).bind(this)\n\n        window.addEventListener('mousemove', mouseMoveListener, false)\n        window.addEventListener('mouseup', mouseUpListener)\n    },\n\n    onDragInit: function(event){\n\n        var config = {\n            diff: {\n                left: 0,\n                top : 0\n            }\n        }\n        this.state = {\n            config: config\n        }\n\n        var initPageCoords = this.state.initPageCoords = {\n            pageX: event.pageX,\n            pageY: event.pageY\n        }\n\n        if (this.config.region){\n            this.state.initialRegion = Region.from(this.config.region)\n            this.state.dragRegion =\n                config.dragRegion =\n                    this.state.initialRegion.clone()\n        }\n        if (this.config.constrainTo){\n            this.state.constrainTo = Region.from(this.config.constrainTo)\n        }\n\n        this.callConfig('onDragInit', event)\n    },\n\n    /**\n     * Called when the first mousemove event occurs after drag is initialized\n     * @param  {Event} event\n     */\n    onDragStart: function(event){\n        this.state.didDrag = this.state.config.didDrag = true\n        this.callConfig('onDragStart', event)\n    },\n\n    /**\n     * Called on all mousemove events after drag is initialized.\n     *\n     * @param  {Event} event\n     */\n    onDrag: function(event){\n\n        var config = this.state.config\n        var args   = [event, config]\n\n        var initPageCoords = this.state.initPageCoords\n\n        var diff = config.diff = {\n            left: event.pageX - initPageCoords.pageX,\n            top : event.pageY - initPageCoords.pageY\n        }\n\n        if (this.state.initialRegion){\n            var dragRegion = config.dragRegion\n\n            //set the dragRegion to initial coords\n            dragRegion.set(this.state.initialRegion)\n\n            //shift it to the new position\n            dragRegion.shift(diff)\n\n            if (this.state.constrainTo){\n                //and finally constrain it if it's the case\n                dragRegion.constrainTo(this.state.constrainTo)\n\n                diff.left = dragRegion.left - this.state.initialRegion.left\n                diff.top  = dragRegion.top - this.state.initialRegion.top\n            }\n\n            config.dragRegion = dragRegion\n        }\n\n        this.callConfig('onDrag', event)\n    },\n\n    /**\n     * Called on the mouseup event on window\n     *\n     * @param  {Event} event\n     */\n    onDrop: function(event){\n        this.callConfig('onDrop', event)\n\n        this.state = null\n    },\n\n    callConfig: function(fnName, event){\n        var config = this.state.config\n        var args   = [event, config]\n\n        var fn = this.config[fnName]\n\n        if (fn){\n            fn.apply(this, args)\n        }\n    }\n\n}, Helper.prototype)\n\nmodule.exports = function(event, config){\n\n    if (config.scope){\n        var skippedKeys = {\n            scope      : 1,\n            region     : 1,\n            constrainTo: 1\n        }\n\n        Object.keys(config).forEach(function(key){\n            var value = config[key]\n\n            if (key in skippedKeys){\n                return\n            }\n\n            if (typeof value == 'function'){\n                config[key] = value.bind(config.scope)\n            }\n        })\n    }\n    var helper = new Helper(config)\n\n    helper.initDrag(event)\n\n    return helper\n\n}"
        },
        {
          "id": 33,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/inherits.js",
          "name": "./~/region/src/inherits.js",
          "size": 315,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 72,
            "building": 121
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./inherits",
              "loc": "10:15-36"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value       : ctor,\n            enumerable  : false,\n            writable    : true,\n            configurable: true\n        }\n    })\n}"
        },
        {
          "id": 34,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/validate.js",
          "name": "./~/region/src/validate.js",
          "size": 583,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 73,
            "building": 121
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./validate",
              "loc": "11:15-36"
            },
            {
              "moduleId": 35,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
              "module": "./~/region/src/statics.js",
              "moduleName": "./~/region/src/statics.js",
              "type": "cjs require",
              "userRequest": "./validate",
              "loc": "4:15-36"
            }
          ],
          "source": "'use strict';\n\n/**\n * @static\n * Returns true if the given region is valid, false otherwise.\n * @param  {Region} region The region to check\n * @return {Boolean}        True, if the region is valid, false otherwise.\n * A region is valid if\n *  * left <= right  &&\n *  * top  <= bottom\n */\nmodule.exports = function validate(region){\n\n    var isValid = true\n\n    if (region.right < region.left){\n        isValid = false\n        region.right = region.left\n    }\n\n    if (region.bottom < region.top){\n        isValid = false\n        region.bottom = region.top\n    }\n\n    return isValid\n}"
        },
        {
          "id": 35,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
          "name": "./~/region/src/statics.js",
          "size": 6712,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 73,
            "building": 135,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./statics",
              "loc": "1032:0-20"
            }
          ],
          "source": "'use strict';\n\nvar hasOwn   = require('hasown')\nvar VALIDATE = require('./validate')\n\nmodule.exports = function(REGION){\n\n    var MAX = Math.max\n    var MIN = Math.min\n\n    var statics = {\n        init: function(){\n            var exportAsNonStatic = {\n                getIntersection      : true,\n                getIntersectionArea  : true,\n                getIntersectionHeight: true,\n                getIntersectionWidth : true,\n                getUnion             : true\n            }\n            var thisProto = REGION.prototype\n            var newName\n\n            var exportHasOwn = hasOwn(exportAsNonStatic)\n            var methodName\n\n            for (methodName in exportAsNonStatic) if (exportHasOwn(methodName)) {\n                newName = exportAsNonStatic[methodName]\n                if (typeof newName != 'string'){\n                    newName = methodName\n                }\n\n                ;(function(proto, methodName, protoMethodName){\n\n                    proto[methodName] = function(region){\n                        //<debug>\n                        if (!REGION[protoMethodName]){\n                            console.warn('cannot find method ', protoMethodName,' on ', REGION)\n                        }\n                        //</debug>\n                        return REGION[protoMethodName](this, region)\n                    }\n\n                })(thisProto, newName, methodName);\n            }\n        },\n\n        validate: VALIDATE,\n\n        /**\n         * Returns the region corresponding to the documentElement\n         * @return {Region} The region corresponding to the documentElement. This region is the maximum region visible on the screen.\n         */\n        getDocRegion: function(){\n            return REGION.fromDOM(document.documentElement)\n        },\n\n        from: function(reg){\n            if (reg.__IS_REGION){\n                return reg\n            }\n\n            if (typeof document != 'undefined'){\n                if (typeof HTMLElement != 'undefined' && reg instanceof HTMLElement){\n                    return REGION.fromDOM(reg)\n                }\n\n                if (reg.type && typeof reg.pageX !== 'undefined' && typeof reg.pageY !== 'undefined'){\n                    return REGION.fromEvent(reg)\n                }\n            }\n\n            return REGION(reg)\n        },\n\n        fromEvent: function(event){\n            return REGION.fromPoint({\n                x: event.pageX,\n                y: event.pageY\n            })\n        },\n\n        fromDOM: function(dom){\n            var rect = dom.getBoundingClientRect()\n            // var docElem = document.documentElement\n            // var win     = window\n\n            // var top  = rect.top + win.pageYOffset - docElem.clientTop\n            // var left = rect.left + win.pageXOffset - docElem.clientLeft\n\n            return new REGION({\n                top   : rect.top,\n                left  : rect.left,\n                bottom: rect.bottom,\n                right : rect.right\n            })\n        },\n\n        /**\n         * @static\n         * Returns a region that is the intersection of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region/Boolean}        The intersection region or false if no intersection found\n         */\n        getIntersection: function(first, second){\n\n            var area = this.getIntersectionArea(first, second)\n\n            if (area){\n                return new REGION(area)\n            }\n\n            return false\n        },\n\n        getIntersectionWidth: function(first, second){\n            var minRight  = MIN(first.right, second.right)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (maxLeft < minRight){\n                return minRight  - maxLeft\n            }\n\n            return 0\n        },\n\n        getIntersectionHeight: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minBottom = MIN(first.bottom,second.bottom)\n\n            if (maxTop  < minBottom){\n                return minBottom - maxTop\n            }\n\n            return 0\n        },\n\n        getIntersectionArea: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minRight  = MIN(first.right, second.right)\n            var minBottom = MIN(first.bottom,second.bottom)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (\n                    maxTop  < minBottom &&\n                    maxLeft < minRight\n                ){\n                return {\n                    top    : maxTop,\n                    right  : minRight,\n                    bottom : minBottom,\n                    left   : maxLeft,\n\n                    width  : minRight  - maxLeft,\n                    height : minBottom - maxTop\n                }\n            }\n\n            return false\n        },\n\n        /**\n         * @static\n         * Returns a region that is the union of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region}        The union region. The smallest region that contains both given regions.\n         */\n        getUnion: function(first, second){\n            var top    = MIN(first.top,   second.top)\n            var right  = MAX(first.right, second.right)\n            var bottom = MAX(first.bottom,second.bottom)\n            var left   = MIN(first.left,  second.left)\n\n            return new REGION(top, right, bottom, left)\n        },\n\n        /**\n         * @static\n         * Returns a region. If the reg argument is a region, returns it, otherwise return a new region built from the reg object.\n         *\n         * @param  {Region} reg A region or an object with either top, left, bottom, right or\n         * with top, left, width, height\n         * @return {Region} A region\n         */\n        getRegion: function(reg){\n            return REGION.from(reg)\n        },\n\n        /**\n         * Creates a region that corresponds to a point.\n         *\n         * @param  {Object} xy The point\n         * @param  {Number} xy.x\n         * @param  {Number} xy.y\n         *\n         * @return {Region}    The new region, with top==xy.y, bottom = xy.y and left==xy.x, right==xy.x\n         */\n        fromPoint: function(xy){\n            return new REGION({\n                        top    : xy.y,\n                        bottom : xy.y,\n                        left   : xy.x,\n                        right  : xy.x\n                    })\n        }\n    }\n\n    Object.keys(statics).forEach(function(key){\n        REGION[key] = statics[key]\n    })\n\n    REGION.init()\n}"
        },
        {
          "id": 36,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/toLowerFirst.js",
          "name": "./~/ustring/src/toLowerFirst.js",
          "size": 132,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 176,
            "building": 138
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/toLowerFirst",
              "loc": "2:23-52"
            }
          ],
          "source": "module.exports = function(str){\n    return str.length?\n            str.charAt(0).toLowerCase() + str.substring(1):\n            str\n}"
        },
        {
          "id": 37,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/toUpperFirst.js",
          "name": "./~/ustring/src/toUpperFirst.js",
          "size": 164,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 177,
            "building": 135
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/toUpperFirst",
              "loc": "3:23-52"
            },
            {
              "moduleId": 42,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
              "module": "./~/ustring/src/humanize.js",
              "moduleName": "./~/ustring/src/humanize.js",
              "type": "cjs require",
              "userRequest": "./toUpperFirst",
              "loc": "5:19-44"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return value.length?\n                value.charAt(0).toUpperCase() + value.substring(1):\n                value\n}"
        },
        {
          "id": 38,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/separate.js",
          "name": "./~/ustring/src/separate.js",
          "size": 468,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 176,
            "building": 144
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/separate",
              "loc": "4:23-48"
            },
            {
              "moduleId": 42,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
              "module": "./~/ustring/src/humanize.js",
              "moduleName": "./~/ustring/src/humanize.js",
              "type": "cjs require",
              "userRequest": "./separate",
              "loc": "3:19-40"
            },
            {
              "moduleId": 43,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenate.js",
              "module": "./~/ustring/src/hyphenate.js",
              "moduleName": "./~/ustring/src/hyphenate.js",
              "type": "cjs require",
              "userRequest": "./separate",
              "loc": "3:15-36"
            }
          ],
          "source": "'use strict'\n\nvar doubleColonRe      = /::/g\nvar upperToLowerRe     = /([A-Z]+)([A-Z][a-z])/g\nvar lowerToUpperRe     = /([a-z\\d])([A-Z])/g\nvar underscoreToDashRe = /_/g\n\nmodule.exports = function(name, separator){\n\n   return name?\n           name.replace(doubleColonRe, '/')\n                .replace(upperToLowerRe, '$1_$2')\n                .replace(lowerToUpperRe, '$1_$2')\n                .replace(underscoreToDashRe, separator || '-')\n            :\n            ''\n}"
        },
        {
          "id": 39,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/stripWhitespace.js",
          "name": "./~/ustring/src/stripWhitespace.js",
          "size": 120,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 177,
            "building": 144
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/stripWhitespace",
              "loc": "5:23-55"
            }
          ],
          "source": "var RE = /\\s/g\n\nmodule.exports = function(str){\n    if (!str){\n        return ''\n    }\n\n    return str.replace(RE, '')\n}"
        },
        {
          "id": 40,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/compactWhitespace.js",
          "name": "./~/ustring/src/compactWhitespace.js",
          "size": 129,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 177,
            "building": 145
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/compactWhitespace",
              "loc": "6:23-57"
            }
          ],
          "source": "var RE = /\\s+/g\n\nmodule.exports = function(str){\n    if (!str){\n        return ''\n    }\n\n    return str.trim().replace(RE, ' ')\n}"
        },
        {
          "id": 41,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
          "name": "./~/ustring/src/camelize.js",
          "size": 250,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 178,
            "building": 146
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/camelize",
              "loc": "7:23-48"
            },
            {
              "moduleId": 42,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
              "module": "./~/ustring/src/humanize.js",
              "moduleName": "./~/ustring/src/humanize.js",
              "type": "cjs require",
              "userRequest": "./camelize",
              "loc": "4:19-40"
            }
          ],
          "source": "'use strict'\n\nvar toCamelFn = function(str, letter){\n       return letter ? letter.toUpperCase(): ''\n   }\n\nvar hyphenRe = require('./hyphenRe')\n\nmodule.exports = function(str){\n   return str?\n          str.replace(hyphenRe, toCamelFn):\n          ''\n}"
        },
        {
          "id": 42,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
          "name": "./~/ustring/src/humanize.js",
          "size": 526,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 177,
            "building": 150,
            "dependencies": 89
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/humanize",
              "loc": "8:23-48"
            }
          ],
          "source": "'use strict'\n\nvar separate     = require('./separate')\nvar camelize     = require('./camelize')\nvar toUpperFirst = require('./toUpperFirst')\nvar hyphenRe     = require('./hyphenRe')\n\nfunction toLowerAndSpace(str, letter){\n    return letter? ' ' + letter.toLowerCase(): ' '\n}\n\nmodule.exports = function(name, config){\n\n    var str = config && config.capitalize?\n                    separate(camelize(name), ' '):\n                    separate(name, ' ').replace(hyphenRe, toLowerAndSpace)\n\n    return toUpperFirst(str.trim())\n}\n"
        },
        {
          "id": 43,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenate.js",
          "name": "./~/ustring/src/hyphenate.js",
          "size": 125,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 178,
            "building": 158,
            "dependencies": 51
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/hyphenate",
              "loc": "9:23-49"
            }
          ],
          "source": "'use strict'\n\nvar separate = require('./separate')\n\nmodule.exports = function(name){\n   return separate(name).toLowerCase()\n}"
        },
        {
          "id": 44,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/endsWith.js",
          "name": "./~/ustring/src/endsWith.js",
          "size": 352,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 179,
            "building": 161
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/endsWith",
              "loc": "10:23-48"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(str, endsWith){\n\n    str += ''\n\n    if (!str){\n        return typeof endsWith == 'string'?\n                    !endsWith:\n                    false\n    }\n\n    endsWith += ''\n\n    if (str.length < endsWith.length){\n        return false\n    }\n\n    return str.lastIndexOf(endsWith) == str.length - endsWith.length\n}"
        },
        {
          "id": 45,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "name": "./~/ustring/src/is/index.js",
          "size": 197,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "profile": {
            "factory": 179,
            "building": 162
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 27,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
              "module": "./~/ustring/index.js",
              "moduleName": "./~/ustring/index.js",
              "type": "cjs require",
              "userRequest": "./src/is",
              "loc": "12:8-27"
            }
          ],
          "source": "module.exports = {\n    alphanum: require('./alphanum'),\n    match   : require('./match'),\n    guid   : require('./guid'),\n    // email   : require('./email'),\n    numeric   : require('./numeric')\n}"
        },
        {
          "id": 46,
          "identifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
          "name": "../react-load-mask/lib/Loader.js",
          "size": 1889,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "profile": {
            "factory": 314,
            "building": 198,
            "dependencies": 784
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 16,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
              "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "type": "cjs require",
              "userRequest": "./Loader",
              "loc": "5:13-32"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nmodule.exports = React.createClass({\n\n    displayName: 'Loader',\n\n    getDefaultProps: function(){\n        return {\n            defaultStyle: {\n                margin: 'auto',\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                bottom: 0,\n                right: 0,\n            },\n            defaultClassName: 'loader',\n            size: 40,\n        }\n    },\n\n    render: function() {\n        var props = assign({}, this.props)\n\n        this.prepareStyle(props)\n\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        return React.DOM.div(props,\n            React.createElement(\"div\", {className: \"loadbar loadbar-1\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-2\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-3\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-4\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-5\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-6\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-7\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-8\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-9\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-10\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-11\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-12\"})\n        )\n    },\n\n    prepareStyle: function(props){\n\n        var style = {}\n\n        assign(style, props.defaultStyle)\n        assign(style, props.style)\n\n        style.width = props.size\n        style.height = props.size\n\n        props.style = style\n    }\n})"
        },
        {
          "id": 47,
          "identifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/node_modules/object-assign/index.js",
          "name": "../react-load-mask/~/object-assign/index.js",
          "size": 484,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "profile": {
            "factory": 393,
            "building": 101
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 16,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
              "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 46,
              "moduleIdentifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
              "module": "../react-load-mask/lib/Loader.js",
              "moduleName": "../react-load-mask/lib/Loader.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            }
          ],
          "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
        },
        {
          "id": 48,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/react-prefixr/stylePrefixr.js",
          "name": "./~/react-prefixr/stylePrefixr.js",
          "size": 1583,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "profile": {
            "factory": 300,
            "building": 154
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 25,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
              "module": "./src/Row/index.jsx",
              "moduleName": "./src/Row/index.jsx",
              "type": "cjs require",
              "userRequest": "react-prefixr",
              "loc": "10:16-40"
            }
          ],
          "source": "'use strict';\n\nvar el;\n\nif(!!global.document){\n  el = global.document.createElement('div');\n}\n\nvar prefixes = [\"ms\", \"Moz\", \"Webkit\", \"O\"];\nvar properties = [\n  'userSelect',\n  'transform',\n  'transition',\n  'transformOrigin',\n  'transformStyle',\n  'transitionProperty',\n  'transitionDuration',\n  'transitionTimingFunction',\n  'transitionDelay',\n  'borderImage',\n  'borderImageSlice',\n  'boxShadow',\n  'backgroundClip',\n  'backfaceVisibility',\n  'perspective',\n  'perspectiveOrigin',\n  'animation',\n  'animationDuration',\n  'animationName',\n  'animationDelay',\n  'animationDirection',\n  'animationIterationCount',\n  'animationTimingFunction',\n  'animationPlayState',\n  'animationFillMode',\n  'appearance'\n];\n\nfunction GetVendorPrefix(property) {\n  if(properties.indexOf(property) == -1 || !global.document || typeof el.style[property] !== 'undefined'){\n    return property;\n  }\n\n  property = property[0].toUpperCase() + property.slice(1);\n  var temp;\n\n  for(var i = 0; i < prefixes.length; i++){\n    temp = prefixes[i] + property;\n    if(typeof el.style[temp] !== 'undefined'){\n      prefixes = [prefixes[i]]; // we only need to check this one prefix from now on.\n      return temp;\n    }\n  }\n  return property[0].toLowerCase() + property.slice(1);\n}\n\n\nmodule.exports = (function(){\n  var cache = {};\n  return function(obj){\n    if(!global.document){\n      return obj;\n    }\n\n    var result = {};\n\n    for(var key in obj){\n      if(cache[key] === undefined){\n        cache[key] = GetVendorPrefix(key);\n      }\n      result[cache[key]] = obj[key];\n    }\n\n    return result;\n  };\n})();"
        },
        {
          "id": 49,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
          "name": "./~/newify/index.js",
          "size": 161,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 190,
            "building": 152
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "newify",
              "loc": "4:16-33"
            },
            {
              "moduleId": 89,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
              "module": "./~/functionally/src/newify.js",
              "moduleName": "./~/functionally/src/newify.js",
              "type": "cjs require",
              "userRequest": "newify",
              "loc": "3:13-30"
            }
          ],
          "source": "var getInstantiatorFunction = require('./getInstantiatorFunction')\n\nmodule.exports = function(fn, args){\n\treturn getInstantiatorFunction(args.length)(fn, args)\n}"
        },
        {
          "id": 50,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "name": "./~/copy-utils/index.js",
          "size": 6752,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 190,
            "building": 163
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "copy-utils",
              "loc": "5:16-37"
            },
            {
              "moduleId": 32,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
              "module": "./~/drag-helper/index.js",
              "moduleName": "./~/drag-helper/index.js",
              "type": "cjs require",
              "userRequest": "copy-utils",
              "loc": "4:13-34"
            }
          ],
          "source": "module.exports = function(){\n\n    'use strict'\n\n    var HAS_OWN       = Object.prototype.hasOwnProperty,\n        STR_OBJECT    = 'object',\n        STR_UNDEFINED = 'undefined'\n\n    return {\n\n        /**\n         * Copies all properties from source to destination\n         *\n         *      copy({name: 'jon',age:5}, this);\n         *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copy: require('./copy'),\n\n        /**\n         * Copies all properties from source to destination, if the property does not exist into the destination\n         *\n         *      copyIf({name: 'jon',age:5}, {age:7})\n         *      // => { name: 'jon', age: 7}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copyIf: require('./copyIf'),\n\n        /**\n         * Copies all properties from source to a new object, with the given value. This object is returned\n         *\n         *      copyAs({name: 'jon',age:5})\n         *      // => the resulting object will have the 'name' and 'age' properties set to 1\n         *\n         * @param {Object} source\n         * @param {Object/Number/String} [value=1]\n         *\n         * @return {Object} destination\n         */\n        copyAs: function(source, value){\n\n            var destination = {}\n\n            value = value || 1\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) ) {\n                    destination[i] = value\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies all properties named in the list, from source to destination\n         *\n         *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n         *      // => {name: 'jon', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyList: require('./copyList'),\n\n        /**\n         * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n         *\n         *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n         *      // => {name: 'jon', age: 10}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyListIf: require('./copyListIf'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination\n         *\n         *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n         *      // => {name: 'jon', age: 5, theYear: 2006}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeys: require('./copyKeys'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination,\n         * but only if the property does not already exist in the destination object\n         *\n         *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n         *      // => {aname: 'test', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeysIf: require('./copyKeysIf'),\n\n        copyExceptKeys: function(source, destination, exceptKeys){\n            destination = destination || {}\n            exceptKeys  = exceptKeys  || {}\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) && !HAS_OWN.call(exceptKeys, i) ) {\n\n                    destination[i] = source[i]\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies the named keys from source to destination.\n         * For the keys that are functions, copies the functions bound to the source\n         *\n         * @param  {Object} source      The source object\n         * @param  {Object} destination The target object\n         * @param  {Object} namedKeys   An object with the names of the keys to copy The values from the keys in this object\n         *                              need to be either numbers or booleans if you want to copy the property under the same name,\n         *                              or a string if you want to copy the property under a different name\n         * @return {Object}             Returns the destination object\n         */\n        bindCopyKeys: function(source, destination, namedKeys){\n            if (arguments.length == 2){\n                namedKeys = destination\n                destination = null\n            }\n\n            destination = destination || {}\n\n            if (\n                       source != null && typeof source    === STR_OBJECT &&\n                    namedKeys != null && typeof namedKeys === STR_OBJECT\n                ) {\n\n\n                var typeOfNamedProperty,\n                    namedPropertyValue,\n\n                    typeOfSourceProperty,\n                    propValue\n\n\n                for(var propName in namedKeys) if (HAS_OWN.call(namedKeys, propName)) {\n\n                    namedPropertyValue = namedKeys[propName]\n                    typeOfNamedProperty = typeof namedPropertyValue\n\n                    propValue = source[propName]\n                    typeOfSourceProperty = typeof propValue\n\n\n                    if ( typeOfSourceProperty !== STR_UNDEFINED ) {\n\n                        destination[\n                            typeOfNamedProperty == 'string'?\n                                            namedPropertyValue :\n                                            propName\n                            ] = typeOfSourceProperty == 'function' ?\n                                            propValue.bind(source):\n                                            propValue\n                    }\n                }\n            }\n\n            return destination\n        }\n    }\n\n}()"
        },
        {
          "id": 51,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
          "name": "./~/i-s/index.js",
          "size": 33,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 190,
            "building": 164
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "i-s",
              "loc": "8:16-30"
            },
            {
              "moduleId": 58,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/numeric.js",
              "module": "./~/ustring/src/is/numeric.js",
              "moduleName": "./~/ustring/src/is/numeric.js",
              "type": "cjs require",
              "userRequest": "i-s",
              "loc": "3:17-31"
            }
          ],
          "source": "module.exports = require('./src')"
        },
        {
          "id": 52,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/events/events.js",
          "name": "(webpack)/~/node-libs-browser/~/events/events.js",
          "size": 8251,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "profile": {
            "factory": 189,
            "building": 204
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 29,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
              "module": "./~/region/src/index.js",
              "moduleName": "./~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "events",
              "loc": "9:19-36"
            }
          ],
          "source": "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      }\n      throw TypeError('Uncaught, unspecified \"error\" event.');\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        len = arguments.length;\n        args = new Array(len - 1);\n        for (i = 1; i < len; i++)\n          args[i - 1] = arguments[i];\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    len = arguments.length;\n    args = new Array(len - 1);\n    for (i = 1; i < len; i++)\n      args[i - 1] = arguments[i];\n\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    var m;\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  var ret;\n  if (!emitter._events || !emitter._events[type])\n    ret = 0;\n  else if (isFunction(emitter._events[type]))\n    ret = 1;\n  else\n    ret = emitter._events[type].length;\n  return ret;\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n"
        },
        {
          "id": 53,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "name": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "size": 28521,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
          "profile": {
            "factory": 198,
            "building": 380,
            "dependencies": 91
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 31,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
              "module": "./~/clone/clone.js",
              "moduleName": "./~/clone/clone.js",
              "type": "cjs require",
              "userRequest": "Buffer",
              "loc": "1:0-122"
            },
            {
              "moduleId": 53,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
              "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "type": "cjs require",
              "userRequest": "Buffer",
              "loc": "1:0-122"
            }
          ],
          "source": "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('is-array')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = Buffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar kMaxLength = 0x3fffffff\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Note:\n *\n * - Implementation must support adding new properties to `Uint8Array` instances.\n *   Firefox 4-29 lacked support, fixed in Firefox 30+.\n *   See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *  - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *  - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *    incorrect length in some situations.\n *\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will\n * get the Object implementation, which is slower but will work correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = (function () {\n  try {\n    var buf = new ArrayBuffer(0)\n    var arr = new Uint8Array(buf)\n    arr.foo = function () { return 42 }\n    return 42 === arr.foo() && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n})()\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (subject, encoding, noZero) {\n  if (!(this instanceof Buffer))\n    return new Buffer(subject, encoding, noZero)\n\n  var type = typeof subject\n\n  // Find the length\n  var length\n  if (type === 'number')\n    length = subject > 0 ? subject >>> 0 : 0\n  else if (type === 'string') {\n    if (encoding === 'base64')\n      subject = base64clean(subject)\n    length = Buffer.byteLength(subject, encoding)\n  } else if (type === 'object' && subject !== null) { // assume object is array-like\n    if (subject.type === 'Buffer' && isArray(subject.data))\n      subject = subject.data\n    length = +subject.length > 0 ? Math.floor(+subject.length) : 0\n  } else\n    throw new TypeError('must start with number, buffer, array or string')\n\n  if (this.length > kMaxLength)\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n      'size: 0x' + kMaxLength.toString(16) + ' bytes')\n\n  var buf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Preferred: Return an augmented `Uint8Array` instance for best performance\n    buf = Buffer._augment(new Uint8Array(length))\n  } else {\n    // Fallback: Return THIS instance of Buffer (created by `new`)\n    buf = this\n    buf.length = length\n    buf._isBuffer = true\n  }\n\n  var i\n  if (Buffer.TYPED_ARRAY_SUPPORT && typeof subject.byteLength === 'number') {\n    // Speed optimization -- use set if we're copying from a typed array\n    buf._set(subject)\n  } else if (isArrayish(subject)) {\n    // Treat array-ish objects as a byte array\n    if (Buffer.isBuffer(subject)) {\n      for (i = 0; i < length; i++)\n        buf[i] = subject.readUInt8(i)\n    } else {\n      for (i = 0; i < length; i++)\n        buf[i] = ((subject[i] % 256) + 256) % 256\n    }\n  } else if (type === 'string') {\n    buf.write(subject, 0, encoding)\n  } else if (type === 'number' && !Buffer.TYPED_ARRAY_SUPPORT && !noZero) {\n    for (i = 0; i < length; i++) {\n      buf[i] = 0\n    }\n  }\n\n  return buf\n}\n\nBuffer.isBuffer = function (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b))\n    throw new TypeError('Arguments must be Buffers')\n\n  var x = a.length\n  var y = b.length\n  for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}\n  if (i !== len) {\n    x = a[i]\n    y = b[i]\n  }\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'binary':\n    case 'base64':\n    case 'raw':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function (list, totalLength) {\n  if (!isArray(list)) throw new TypeError('Usage: Buffer.concat(list[, length])')\n\n  if (list.length === 0) {\n    return new Buffer(0)\n  } else if (list.length === 1) {\n    return list[0]\n  }\n\n  var i\n  if (totalLength === undefined) {\n    totalLength = 0\n    for (i = 0; i < list.length; i++) {\n      totalLength += list[i].length\n    }\n  }\n\n  var buf = new Buffer(totalLength)\n  var pos = 0\n  for (i = 0; i < list.length; i++) {\n    var item = list[i]\n    item.copy(buf, pos)\n    pos += item.length\n  }\n  return buf\n}\n\nBuffer.byteLength = function (str, encoding) {\n  var ret\n  str = str + ''\n  switch (encoding || 'utf8') {\n    case 'ascii':\n    case 'binary':\n    case 'raw':\n      ret = str.length\n      break\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      ret = str.length * 2\n      break\n    case 'hex':\n      ret = str.length >>> 1\n      break\n    case 'utf8':\n    case 'utf-8':\n      ret = utf8ToBytes(str).length\n      break\n    case 'base64':\n      ret = base64ToBytes(str).length\n      break\n    default:\n      ret = str.length\n  }\n  return ret\n}\n\n// pre-set for values that may exist in the future\nBuffer.prototype.length = undefined\nBuffer.prototype.parent = undefined\n\n// toString(encoding, start=0, end=buffer.length)\nBuffer.prototype.toString = function (encoding, start, end) {\n  var loweredCase = false\n\n  start = start >>> 0\n  end = end === undefined || end === Infinity ? this.length : end >>> 0\n\n  if (!encoding) encoding = 'utf8'\n  if (start < 0) start = 0\n  if (end > this.length) end = this.length\n  if (end <= start) return ''\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'binary':\n        return binarySlice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase)\n          throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.equals = function (b) {\n  if(!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max)\n      str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  return Buffer.compare(this, b)\n}\n\n// `get` will be removed in Node 0.13+\nBuffer.prototype.get = function (offset) {\n  console.log('.get() is deprecated. Access using array indexes instead.')\n  return this.readUInt8(offset)\n}\n\n// `set` will be removed in Node 0.13+\nBuffer.prototype.set = function (v, offset) {\n  console.log('.set() is deprecated. Access using array indexes instead.')\n  return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; i++) {\n    var byte = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(byte)) throw new Error('Invalid hex string')\n    buf[offset + i] = byte\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction utf16leWrite (buf, string, offset, length) {\n  var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length, 2)\n  return charsWritten\n}\n\nBuffer.prototype.write = function (string, offset, length, encoding) {\n  // Support both (string, offset, length, encoding)\n  // and the legacy (string, encoding, offset, length)\n  if (isFinite(offset)) {\n    if (!isFinite(length)) {\n      encoding = length\n      length = undefined\n    }\n  } else {  // legacy\n    var swap = encoding\n    encoding = offset\n    offset = length\n    length = swap\n  }\n\n  offset = Number(offset) || 0\n  var remaining = this.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n  encoding = String(encoding || 'utf8').toLowerCase()\n\n  var ret\n  switch (encoding) {\n    case 'hex':\n      ret = hexWrite(this, string, offset, length)\n      break\n    case 'utf8':\n    case 'utf-8':\n      ret = utf8Write(this, string, offset, length)\n      break\n    case 'ascii':\n      ret = asciiWrite(this, string, offset, length)\n      break\n    case 'binary':\n      ret = binaryWrite(this, string, offset, length)\n      break\n    case 'base64':\n      ret = base64Write(this, string, offset, length)\n      break\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      ret = utf16leWrite(this, string, offset, length)\n      break\n    default:\n      throw new TypeError('Unknown encoding: ' + encoding)\n  }\n  return ret\n}\n\nBuffer.prototype.toJSON = function () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  var res = ''\n  var tmp = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; i++) {\n    if (buf[i] <= 0x7F) {\n      res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])\n      tmp = ''\n    } else {\n      tmp += '%' + buf[i].toString(16)\n    }\n  }\n\n  return res + decodeUtf8Char(tmp)\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; i++) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction binarySlice (buf, start, end) {\n  return asciiSlice(buf, start, end)\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; i++) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len;\n    if (start < 0)\n      start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0)\n      end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start)\n    end = start\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    return Buffer._augment(this.subarray(start, end))\n  } else {\n    var sliceLen = end - start\n    var newBuf = new Buffer(sliceLen, undefined, true)\n    for (var i = 0; i < sliceLen; i++) {\n      newBuf[i] = this[i + start]\n    }\n    return newBuf\n  }\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0)\n    throw new RangeError('offset is not uint')\n  if (offset + ext > length)\n    throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUInt8 = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n      ((this[offset + 1] << 16) |\n      (this[offset + 2] << 8) |\n      this[offset + 3])\n}\n\nBuffer.prototype.readInt8 = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80))\n    return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16) |\n      (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n      (this[offset + 1] << 16) |\n      (this[offset + 2] << 8) |\n      (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n  if (value > max || value < min) throw new TypeError('value is out of bounds')\n  if (offset + ext > buf.length) throw new TypeError('index out of range')\n}\n\nBuffer.prototype.writeUInt8 = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = value\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n  } else objectWriteUInt16(this, value, offset, true)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = value\n  } else objectWriteUInt16(this, value, offset, false)\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = value\n  } else objectWriteUInt32(this, value, offset, true)\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = value\n  } else objectWriteUInt32(this, value, offset, false)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt8 = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = value\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n  } else objectWriteUInt16(this, value, offset, true)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = value\n  } else objectWriteUInt16(this, value, offset, false)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else objectWriteUInt32(this, value, offset, true)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = value\n  } else objectWriteUInt32(this, value, offset, false)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (value > max || value < min) throw new TypeError('value is out of bounds')\n  if (offset + ext > buf.length) throw new TypeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert)\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert)\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function (target, target_start, start, end) {\n  var source = this\n\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (!target_start) target_start = 0\n\n  // Copy 0 bytes; we're done\n  if (end === start) return\n  if (target.length === 0 || source.length === 0) return\n\n  // Fatal error conditions\n  if (end < start) throw new TypeError('sourceEnd < sourceStart')\n  if (target_start < 0 || target_start >= target.length)\n    throw new TypeError('targetStart out of bounds')\n  if (start < 0 || start >= source.length) throw new TypeError('sourceStart out of bounds')\n  if (end < 0 || end > source.length) throw new TypeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length)\n    end = this.length\n  if (target.length - target_start < end - start)\n    end = target.length - target_start + start\n\n  var len = end - start\n\n  if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < len; i++) {\n      target[i + target_start] = this[i + start]\n    }\n  } else {\n    target._set(this.subarray(start, start + len), target_start)\n  }\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function (value, start, end) {\n  if (!value) value = 0\n  if (!start) start = 0\n  if (!end) end = this.length\n\n  if (end < start) throw new TypeError('end < start')\n\n  // Fill 0 bytes; we're done\n  if (end === start) return\n  if (this.length === 0) return\n\n  if (start < 0 || start >= this.length) throw new TypeError('start out of bounds')\n  if (end < 0 || end > this.length) throw new TypeError('end out of bounds')\n\n  var i\n  if (typeof value === 'number') {\n    for (i = start; i < end; i++) {\n      this[i] = value\n    }\n  } else {\n    var bytes = utf8ToBytes(value.toString())\n    var len = bytes.length\n    for (i = start; i < end; i++) {\n      this[i] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function () {\n  if (typeof Uint8Array !== 'undefined') {\n    if (Buffer.TYPED_ARRAY_SUPPORT) {\n      return (new Buffer(this)).buffer\n    } else {\n      var buf = new Uint8Array(this.length)\n      for (var i = 0, len = buf.length; i < len; i += 1) {\n        buf[i] = this[i]\n      }\n      return buf.buffer\n    }\n  } else {\n    throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n  }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function (arr) {\n  arr.constructor = Buffer\n  arr._isBuffer = true\n\n  // save reference to original Uint8Array get/set methods before overwriting\n  arr._get = arr.get\n  arr._set = arr.set\n\n  // deprecated, will be removed in node 0.13+\n  arr.get = BP.get\n  arr.set = BP.set\n\n  arr.write = BP.write\n  arr.toString = BP.toString\n  arr.toLocaleString = BP.toString\n  arr.toJSON = BP.toJSON\n  arr.equals = BP.equals\n  arr.compare = BP.compare\n  arr.copy = BP.copy\n  arr.slice = BP.slice\n  arr.readUInt8 = BP.readUInt8\n  arr.readUInt16LE = BP.readUInt16LE\n  arr.readUInt16BE = BP.readUInt16BE\n  arr.readUInt32LE = BP.readUInt32LE\n  arr.readUInt32BE = BP.readUInt32BE\n  arr.readInt8 = BP.readInt8\n  arr.readInt16LE = BP.readInt16LE\n  arr.readInt16BE = BP.readInt16BE\n  arr.readInt32LE = BP.readInt32LE\n  arr.readInt32BE = BP.readInt32BE\n  arr.readFloatLE = BP.readFloatLE\n  arr.readFloatBE = BP.readFloatBE\n  arr.readDoubleLE = BP.readDoubleLE\n  arr.readDoubleBE = BP.readDoubleBE\n  arr.writeUInt8 = BP.writeUInt8\n  arr.writeUInt16LE = BP.writeUInt16LE\n  arr.writeUInt16BE = BP.writeUInt16BE\n  arr.writeUInt32LE = BP.writeUInt32LE\n  arr.writeUInt32BE = BP.writeUInt32BE\n  arr.writeInt8 = BP.writeInt8\n  arr.writeInt16LE = BP.writeInt16LE\n  arr.writeInt16BE = BP.writeInt16BE\n  arr.writeInt32LE = BP.writeInt32LE\n  arr.writeInt32BE = BP.writeInt32BE\n  arr.writeFloatLE = BP.writeFloatLE\n  arr.writeFloatBE = BP.writeFloatBE\n  arr.writeDoubleLE = BP.writeDoubleLE\n  arr.writeDoubleBE = BP.writeDoubleBE\n  arr.fill = BP.fill\n  arr.inspect = BP.inspect\n  arr.toArrayBuffer = BP.toArrayBuffer\n\n  return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-z]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction isArrayish (subject) {\n  return isArray(subject) || Buffer.isBuffer(subject) ||\n      subject && typeof subject === 'object' &&\n      typeof subject.length === 'number'\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    var b = str.charCodeAt(i)\n    if (b <= 0x7F) {\n      byteArray.push(b)\n    } else {\n      var start = i\n      if (b >= 0xD800 && b <= 0xDFFF) i++\n      var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')\n      for (var j = 0; j < h.length; j++) {\n        byteArray.push(parseInt(h[j], 16))\n      }\n    }\n  }\n  return byteArray\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(str)\n}\n\nfunction blitBuffer (src, dst, offset, length, unitSize) {\n  if (unitSize) length -= length % unitSize;\n  for (var i = 0; i < length; i++) {\n    if ((i + offset >= dst.length) || (i >= src.length))\n      break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction decodeUtf8Char (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    return String.fromCharCode(0xFFFD) // UTF 8 invalid char\n  }\n}\n"
        },
        {
          "id": 54,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenRe.js",
          "name": "./~/ustring/src/hyphenRe.js",
          "size": 30,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
          "profile": {
            "factory": 100,
            "building": 330
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 41,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
              "module": "./~/ustring/src/camelize.js",
              "moduleName": "./~/ustring/src/camelize.js",
              "type": "cjs require",
              "userRequest": "./hyphenRe",
              "loc": "7:15-36"
            },
            {
              "moduleId": 42,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
              "module": "./~/ustring/src/humanize.js",
              "moduleName": "./~/ustring/src/humanize.js",
              "type": "cjs require",
              "userRequest": "./hyphenRe",
              "loc": "6:19-40"
            }
          ],
          "source": "module.exports = /[-\\s]+(.)?/g"
        },
        {
          "id": 55,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/alphanum.js",
          "name": "./~/ustring/src/is/alphanum.js",
          "size": 67,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "profile": {
            "factory": 147,
            "building": 336,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 45,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
              "module": "./~/ustring/src/is/index.js",
              "moduleName": "./~/ustring/src/is/index.js",
              "type": "cjs require",
              "userRequest": "./alphanum",
              "loc": "2:14-35"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = require('./match')(/^[a-zA-Z0-9]+$/)"
        },
        {
          "id": 56,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/match.js",
          "name": "./~/ustring/src/is/match.js",
          "size": 123,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "profile": {
            "factory": 148,
            "building": 341,
            "dependencies": 77
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 45,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
              "module": "./~/ustring/src/is/index.js",
              "moduleName": "./~/ustring/src/is/index.js",
              "type": "cjs require",
              "userRequest": "./match",
              "loc": "3:14-32"
            },
            {
              "moduleId": 55,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/alphanum.js",
              "module": "./~/ustring/src/is/alphanum.js",
              "moduleName": "./~/ustring/src/is/alphanum.js",
              "type": "cjs require",
              "userRequest": "./match",
              "loc": "3:17-35"
            }
          ],
          "source": "'use strict'\n\nvar F = require('functionally')\n\nmodule.exports = F.curry(function(re, value){\n    return !!re.test(value)\n})"
        },
        {
          "id": 57,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/guid.js",
          "name": "./~/ustring/src/is/guid.js",
          "size": 234,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "profile": {
            "factory": 148,
            "building": 337
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 45,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
              "module": "./~/ustring/src/is/index.js",
              "moduleName": "./~/ustring/src/is/index.js",
              "type": "cjs require",
              "userRequest": "./guid",
              "loc": "4:13-30"
            }
          ],
          "source": "'use strict'\n\nvar regex = /^[A-F0-9]{8}(?:-?[A-F0-9]{4}){3}-?[A-F0-9]{12}$/i\nvar regex2 = /^\\{[A-F0-9]{8}(?:-?[A-F0-9]{4}){3}-?[A-F0-9]{12}\\}$/i\n\nmodule.exports = function(value){\n    return regex.test(value) || regex2.test(value)\n}\n\n"
        },
        {
          "id": 58,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/numeric.js",
          "name": "./~/ustring/src/is/numeric.js",
          "size": 53,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "profile": {
            "factory": 149,
            "building": 336,
            "dependencies": 81
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 45,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
              "module": "./~/ustring/src/is/index.js",
              "moduleName": "./~/ustring/src/is/index.js",
              "type": "cjs require",
              "userRequest": "./numeric",
              "loc": "6:16-36"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = require('i-s').numeric"
        },
        {
          "id": 59,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "name": "./~/functionally/index.js",
          "size": 20486,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "profile": {
            "factory": 213,
            "building": 404
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 32,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
              "module": "./~/drag-helper/index.js",
              "moduleName": "./~/drag-helper/index.js",
              "type": "cjs require",
              "userRequest": "functionally",
              "loc": "3:13-36"
            },
            {
              "moduleId": 56,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/match.js",
              "module": "./~/ustring/src/is/match.js",
              "moduleName": "./~/ustring/src/is/match.js",
              "type": "cjs require",
              "userRequest": "functionally",
              "loc": "3:8-31"
            }
          ],
          "source": "    var setImmediate = function(fn){\r\n        setTimeout(fn, 0)\r\n    }\r\n    var clearImmediate = clearTimeout\r\n    /**\r\n     * Utility methods for working with functions.\r\n     * These methods augment the Function prototype.\r\n     *\r\n     * Using {@link #before}\r\n     *\r\n     *      function log(m){\r\n     *          console.log(m)\r\n     *      }\r\n     *\r\n     *      var doLog = function (m){\r\n     *          console.log('LOG ')\r\n     *      }.before(log)\r\n     *\r\n     *      doLog('test')\r\n     *      //will log\r\n     *      //\"LOG \"\r\n     *      //and then\r\n     *      //\"test\"\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #bindArgs}:\r\n     *\r\n     *      //returns the sum of all arguments\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1 = add.bindArgs(1)\r\n     *\r\n     *      add1(2, 3) == 6\r\n     *\r\n     * Using {@link #lockArgs}:\r\n     *\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1_2   = add.lockArgs(1,2)\r\n     *      var add1_2_3 = add.lockArgs(1,2,3)\r\n     *\r\n     *      add1_2(3,4)  == 3 //args are locked to only be 1 and 2\r\n     *      add1_2_3(6)  == 6 //args are locked to only be 1, 2 and 3\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #compose}:\r\n     *\r\n     *      function multiply(a,b){\r\n     *          return a* b\r\n     *      }\r\n     *\r\n     *      var multiply2 = multiply.curry()(2)\r\n     *\r\n     *      Function.compose(multiply2( add(5,6) )) == multiply2( add(5,6) )\r\n     *\r\n     *\r\n     * @class Function\r\n     */\r\n\r\n    var SLICE = Array.prototype.slice\r\n\r\n    var curry = require('./src/curry'),\r\n\r\n        findFn = function(fn, target, onFound){\r\n            // if (typeof target.find == 'function'){\r\n            //     return target.find(fn)\r\n            // }\r\n\r\n            onFound = typeof onFound == 'function'?\r\n                        onFound:\r\n                        function(found, key, target){\r\n                            return found\r\n                        }\r\n\r\n            if (Array.isArray(target)){\r\n                var i   = 0\r\n                var len = target.length\r\n                var it\r\n\r\n                for(; i < len; i++){\r\n                    it = target[i]\r\n                    if (fn(it, i, target)){\r\n                        return onFound(it, i, target)\r\n                    }\r\n                }\r\n\r\n                return\r\n            }\r\n\r\n            if (typeof target == 'object'){\r\n                var keys = Object.keys(target)\r\n                var i = 0\r\n                var len = keys.length\r\n                var k\r\n                var it\r\n\r\n                for( ; i < len; i++){\r\n                    k  = keys[i]\r\n                    it = target[k]\r\n\r\n                    if (fn(it, k, target)){\r\n                        return onFound(it, k, target)\r\n                    }\r\n                }\r\n            }\r\n        },\r\n\r\n        find = curry(findFn, 2),\r\n\r\n        findIndex = curry(function(fn, target){\r\n            return findFn(fn, target, function(it, i){\r\n                return i\r\n            })\r\n        }),\r\n\r\n        bindFunctionsOf = function(obj) {\r\n            Object.keys(obj).forEach(function(k){\r\n                if (typeof obj[k] == 'function'){\r\n                    obj[k] = obj[k].bind(obj)\r\n                }\r\n            })\r\n\r\n            return obj\r\n        },\r\n\r\n        /*\r\n         * @param {Function...} an enumeration of functions, each consuming the result of the following function.\r\n         *\r\n         * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\r\n         *\r\n         * @return the result of the first function in the enumeration\r\n         */\r\n        compose = require('./src/compose'),\r\n\r\n        chain = require('./src/chain'),\r\n\r\n        once = require('./src/once'),\r\n\r\n        bindArgsArray = require('./src/bindArgsArray'),\r\n\r\n        bindArgs = require('./src/bindArgs'),\r\n\r\n        lockArgsArray = require('./src/lockArgsArray'),\r\n\r\n        lockArgs = require('./src/lockArgs'),\r\n\r\n        skipArgs = function(fn, count){\r\n            return function(){\r\n                var args = SLICE.call(arguments, count || 0)\r\n\r\n                return fn.apply(this, args)\r\n            }\r\n        },\r\n\r\n        intercept = function(interceptedFn, interceptingFn, withStopArg){\r\n\r\n            return function(){\r\n                var args    = [].from(arguments),\r\n                    stopArg = { stop: false }\r\n\r\n                if (withStopArg){\r\n                    args.push(stopArg)\r\n                }\r\n\r\n                var result = interceptingFn.apply(this, args)\r\n\r\n                if (withStopArg){\r\n                    if (stopArg.stop === true){\r\n                        return result\r\n                    }\r\n\r\n                } else {\r\n                    if (result === false){\r\n                        return result\r\n                    }\r\n                }\r\n\r\n                //the interception was not stopped\r\n                return interceptedFn.apply(this, arguments)\r\n            }\r\n\r\n        },\r\n\r\n        delay = function(fn, delay, scope){\r\n\r\n            var delayIsNumber = delay * 1 == delay\r\n\r\n            if (arguments.length == 2 && !delayIsNumber){\r\n                scope = delay\r\n                delay = 0\r\n            } else {\r\n                if (!delayIsNumber){\r\n                    delay = 0\r\n                }\r\n            }\r\n\r\n            return function(){\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                if (delay || !setImmediate){\r\n                    setTimeout(function(){\r\n                        fn.apply(self, args)\r\n                    }, delay)\r\n\r\n                } else {\r\n                    setImmediate(function(){\r\n                        fn.apply(self, args)\r\n                    })\r\n                }\r\n            }\r\n        },\r\n\r\n        defer = function(fn, scope){\r\n            return delay(fn, 0, scope)\r\n        },\r\n\r\n        buffer = function(fn, delay, scope){\r\n\r\n            var timeoutId = -1\r\n\r\n            return function(){\r\n\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                var withTimeout = delay || !setImmediate,\r\n                    clearFn = withTimeout?\r\n                                clearTimeout:\r\n                                clearImmediate,\r\n                    setFn   = withTimeout?\r\n                                setTimeout:\r\n                                setImmediate\r\n\r\n                if (timeoutId !== -1){\r\n                    clearFn(timeoutId)\r\n                }\r\n\r\n                timeoutId = setFn(function(){\r\n                    fn.apply(self, args)\r\n                    self = null\r\n                }, delay)\r\n\r\n            }\r\n\r\n        },\r\n\r\n        throttle = function(fn, delay, scope) {\r\n            var timeoutId = -1,\r\n                self,\r\n                args\r\n\r\n            return function () {\r\n\r\n                self = scope || this\r\n                args = arguments\r\n\r\n                if (timeoutId !== -1) {\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function () {\r\n                        fn.apply(self, args)\r\n\r\n                        self = null\r\n                        timeoutId = -1\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n        },\r\n\r\n        spread = function(fn, delay, scope){\r\n\r\n            var timeoutId       = -1\r\n            var callCount       = 0\r\n            var executeCount    = 0\r\n            var nextArgs        = {}\r\n            var increaseCounter = true\r\n            var resultingFnUnbound\r\n            var resultingFn\r\n\r\n            resultingFn = resultingFnUnbound = function(){\r\n\r\n                var args = arguments,\r\n                    self = scope || this\r\n\r\n                if (increaseCounter){\r\n                    nextArgs[callCount++] = {args: args, scope: self}\r\n                }\r\n\r\n                if (timeoutId !== -1){\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function(){\r\n                        fn.apply(self, args)\r\n\r\n                        timeoutId = -1\r\n                        executeCount++\r\n\r\n                        if (callCount !== executeCount){\r\n                            resultingFn = bindArgsArray(resultingFnUnbound, nextArgs[executeCount].args).bind(nextArgs[executeCount].scope)\r\n                            delete nextArgs[executeCount]\r\n\r\n                            increaseCounter = false\r\n                            resultingFn.apply(self)\r\n                            increaseCounter = true\r\n                        } else {\r\n                            nextArgs = {}\r\n                        }\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n            return resultingFn\r\n        },\r\n\r\n        /*\r\n         * @param {Array} args the array for which to create a cache key\r\n         * @param {Number} [cacheParamNumber] the number of args to use for the cache key. Use this to limit the args that area actually used for the cache key\r\n         */\r\n        getCacheKey = function(args, cacheParamNumber){\r\n            if (cacheParamNumber == null){\r\n                cacheParamNumber = -1\r\n            }\r\n\r\n            var i        = 0,\r\n                len      = Math.min(args.length, cacheParamNumber),\r\n                cacheKey = [],\r\n                it\r\n\r\n            for ( ; i < len; i++){\r\n                it = args[i]\r\n\r\n                if (root.check.isPlainObject(it) || Array.isArray(it)){\r\n                    cacheKey.push(JSON.stringify(it))\r\n                } else {\r\n                    cacheKey.push(String(it))\r\n                }\r\n            }\r\n\r\n            return cacheKey.join(', ')\r\n        },\r\n\r\n        /*\r\n         * @param {Function} fn - the function to cache results for\r\n         * @param {Number} skipCacheParamNumber - the index of the boolean parameter that makes this function skip the caching and\r\n         * actually return computed results.\r\n         * @param {Function|String} cacheBucketMethod - a function or the name of a method on this object which makes caching distributed across multiple buckets.\r\n         * If given, cached results will be searched into the cache corresponding to this bucket. If no result found, return computed result.\r\n         *\r\n         * For example this param is very useful when a function from a prototype is cached,\r\n         * but we want to return the same cached results only for one object that inherits that proto, not for all objects. Thus, for example for Wes.Element,\r\n         * we use the 'getId' cacheBucketMethod to indicate cached results for one object only.\r\n         * @param {Function} [cacheKeyBuilder] A function to be used to compose the cache key\r\n         *\r\n         * @return {Function} a new function, which returns results from cache, if they are available, otherwise uses the given fn to compute the results.\r\n         * This returned function has a 'clearCache' function attached, which clears the caching. If a parameter ( a bucket id) is  provided,\r\n         * only clears the cache in the specified cache bucket.\r\n         */\r\n        cache = function(fn, config){\r\n            config = config || {}\r\n\r\n            var bucketCache = {},\r\n                cache       = {},\r\n                skipCacheParamNumber = config.skipCacheIndex,\r\n                cacheBucketMethod    = config.cacheBucket,\r\n                cacheKeyBuilder      = config.cacheKey,\r\n                cacheArgsLength      = skipCacheParamNumber == null?\r\n                                            fn.length:\r\n                                            skipCacheParamNumber,\r\n                cachingFn\r\n\r\n            cachingFn = function(){\r\n                var result,\r\n                    skipCache = skipCacheParamNumber != null?\r\n                                                arguments[skipCacheParamNumber] === true:\r\n                                                false,\r\n                    args = skipCache?\r\n                                    SLICE.call(arguments, 0, cacheArgsLength):\r\n                                    SLICE.call(arguments),\r\n\r\n                    cacheBucketId = cacheBucketMethod != null?\r\n                                        typeof cacheBucketMethod == 'function'?\r\n                                            cacheBucketMethod():\r\n                                            typeof this[cacheBucketMethod] == 'function'?\r\n                                                this[cacheBucketMethod]():\r\n                                                null\r\n                                        :\r\n                                        null,\r\n\r\n\r\n                    cacheObject = cacheBucketId?\r\n                                        bucketCache[cacheBucketId]:\r\n                                        cache,\r\n\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(args, cacheArgsLength)\r\n\r\n                if (cacheBucketId && !cacheObject){\r\n                    cacheObject = bucketCache[cacheBucketId] = {}\r\n                }\r\n\r\n                if (skipCache || cacheObject[cacheKey] == null){\r\n                    cacheObject[cacheKey] = result = fn.apply(this, args)\r\n                } else {\r\n                    result = cacheObject[cacheKey]\r\n                }\r\n\r\n                return result\r\n            }\r\n\r\n            /*\r\n             * @param {String|Object|Number} [bucketId] the bucket for which to clear the cache. If none given, clears all the cache for this function.\r\n             */\r\n            cachingFn.clearCache = function(bucketId){\r\n                if (bucketId){\r\n                    delete bucketCache[String(bucketId)]\r\n                } else {\r\n                    cache = {}\r\n                    bucketCache = {}\r\n                }\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getCache = function(cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.getBucketCache(null, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket from which to retrieve the cached value\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getBucketCache = function(bucketId, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId);\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {}\r\n                }\r\n\r\n                return cacheObject[cacheKey]\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setCache = function(value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.setBucketCache(null, value, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket for which to set the cache value\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setBucketCache = function(bucketId, value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId)\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {};\r\n                }\r\n\r\n                return cacheObject[cacheKey] = value\r\n            }\r\n\r\n            return cachingFn\r\n        }\r\n\r\nmodule.exports = {\r\n\r\n    map: require('./src/map'),\r\n\r\n    dot: require('./src/dot'),\r\n\r\n    maxArgs: require('./src/maxArgs'),\r\n\r\n    /**\r\n     * @method compose\r\n     *\r\n     * Example:\r\n     *\r\n     *      zippy.Function.compose(c, b, a)\r\n     *\r\n     * See {@link Function#compose}\r\n     */\r\n    compose: compose,\r\n\r\n    /**\r\n     * See {@link Function#self}\r\n     */\r\n    self: function(fn){\r\n        return fn\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#buffer}\r\n     */\r\n    buffer: buffer,\r\n\r\n    /**\r\n     * See {@link Function#delay}\r\n     */\r\n    delay: delay,\r\n\r\n    /**\r\n     * See {@link Function#defer}\r\n     * @param {Function} fn\r\n     * @param {Object} scope\r\n     */\r\n    defer:defer,\r\n\r\n    /**\r\n     * See {@link Function#skipArgs}\r\n     * @param {Function} fn\r\n     * @param {Number} [count=0] how many args to skip when calling the resulting function\r\n     * @return {Function} The function that will call the original fn without the first count args.\r\n     */\r\n    skipArgs: skipArgs,\r\n\r\n    /**\r\n     * See {@link Function#intercept}\r\n     */\r\n    intercept: function(fn, interceptedFn, withStopArgs){\r\n        return intercept(interceptedFn, fn, withStopArgs)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#throttle}\r\n     */\r\n    throttle: throttle,\r\n\r\n    /**\r\n     * See {@link Function#spread}\r\n     */\r\n    spread: spread,\r\n\r\n    /**\r\n     * See {@link Function#chain}\r\n     */\r\n    chain: function(fn, where, mainFn){\r\n        return chain(where, mainFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#before}\r\n     */\r\n    before: function(fn, otherFn){\r\n        return chain('before', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#after}\r\n     */\r\n    after: function(fn, otherFn){\r\n        return chain('after', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#curry}\r\n     */\r\n    curry: curry,\r\n\r\n    /**\r\n     * See {@link Function#once}\r\n     */\r\n    once: once,\r\n\r\n    /**\r\n     * See {@link Function#bindArgs}\r\n     */\r\n    bindArgs: bindArgs,\r\n\r\n    /**\r\n     * See {@link Function#bindArgsArray}\r\n     */\r\n    bindArgsArray: bindArgsArray,\r\n\r\n    /**\r\n     * See {@link Function#lockArgs}\r\n     */\r\n    lockArgs: lockArgs,\r\n\r\n    /**\r\n     * See {@link Function#lockArgsArray}\r\n     */\r\n    lockArgsArray: lockArgsArray,\r\n\r\n    bindFunctionsOf: bindFunctionsOf,\r\n\r\n    find: find,\r\n\r\n    findIndex: findIndex,\r\n\r\n    newify: require('./src/newify')\r\n}"
        },
        {
          "id": 60,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "name": "./~/region-align/index.js",
          "size": 6793,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "profile": {
            "factory": 211,
            "building": 413,
            "dependencies": 30
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 32,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
              "module": "./~/drag-helper/index.js",
              "moduleName": "./~/drag-helper/index.js",
              "type": "cjs require",
              "userRequest": "region-align",
              "loc": "5:13-36"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\n\nrequire('./Region.static')\nrequire('./Region.proto')\n\nvar COMPUTE_ALIGN_REGION = require('./computeAlignRegion')\n\n/**\n * region-align module exposes methods for aligning {@link Element} and {@link Region} instances\n *\n * The #alignTo method aligns this to the target element/region using the specified positions. See #alignTo for a graphical example.\n *\n *\n *      var div = Element.select('div.first')\n *\n *      div.alignTo(Element.select('body') , 'br-br')\n *\n *      //aligns the div to be in the bottom-right corner of the body\n *\n * Other useful methods\n *\n *  * {@link #alignRegions} - aligns a given source region to a target region\n *  * {@link #COMPUTE_ALIGN_REGION} - given a source region and a target region, and alignment positions, returns a clone of the source region, but aligned to satisfy the given alignments\n */\n\n\n/**\n * Aligns sourceRegion to targetRegion. It modifies the sourceRegion in order to perform the correct alignment.\n * See #COMPUTE_ALIGN_REGION for details and examples.\n *\n * This method calls #COMPUTE_ALIGN_REGION passing to it all its arguments. The #COMPUTE_ALIGN_REGION method returns a region that is properly aligned.\n * If this returned region position/size differs from sourceRegion, then the sourceRegion is modified to be an exact copy of the aligned region.\n *\n * @inheritdoc #COMPUTE_ALIGN_REGION\n * @return {String} the position used for alignment\n */\nRegion.alignRegions = function(sourceRegion, targetRegion, positions, config){\n\n    var result        = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var alignedRegion = result.region\n\n    if ( !alignedRegion.equals(sourceRegion) ) {\n        sourceRegion.setRegion(alignedRegion)\n    }\n\n    return result.position\n\n}\n\n    /**\n     *\n     * The #alignTo method aligns this to the given target region, using the specified alignment position(s).\n     * You can also specify a constrain for the alignment.\n     *\n     * Example\n     *\n     *      BIG\n     *      ________________________\n     *      |  _______              |\n     *      | |       |             |\n     *      | |   A   |             |\n     *      | |       |      _____  |\n     *      | |_______|     |     | |\n     *      |               |  B  | |\n     *      |               |     | |\n     *      |_______________|_____|_|\n     *\n     * Assume the *BIG* outside rectangle is our constrain region, and you want to align the *A* rectangle\n     * to the *B* rectangle. Ideally, you'll want their tops to be aligned, and *A* to be placed at the right side of *B*\n     *\n     *\n     *      //so we would align them using\n     *\n     *      A.alignTo(B, 'tl-tr', { constrain: BIG })\n     *\n     * But this would result in\n     *\n     *       BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |                _____ _|_____\n     *      |               |     | .     |\n     *      |               |  B  | . A   |\n     *      |               |     | .     |\n     *      |_______________|_____|_._____|\n     *\n     *\n     * Which is not what we want. So we specify an array of options to try\n     *\n     *      A.alignTo(B, ['tl-tr', 'tr-tl'], { constrain: BIG })\n     *\n     * So by this we mean: try to align A(top,left) with B(top,right) and stick to the BIG constrain. If this is not possible,\n     * try the next option: align A(top,right) with B(top,left)\n     *\n     * So this is what we end up with\n     *\n     *      BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |        _______ _____  |\n     *      |       |       |     | |\n     *      |       |   A   |  B  | |\n     *      |       |       |     | |\n     *      |_______|_______|_____|_|\n     *\n     *\n     * Which is a lot better!\n     *\n     * @param {Element/Region} target The target to which to align this alignable.\n     *\n     * @param {String[]/String} positions The positions for the alignment.\n     *\n     * Example:\n     *\n     *      'br-tl'\n     *      ['br-tl','br-tr','cx-tc']\n     *\n     * This method will try to align using the first position. But if there is a constrain region, that position might not satisfy the constrain.\n     * If this is the case, the next positions will be tried. If one of them satifies the constrain, it will be used for aligning and it will be returned from this method.\n     *\n     * If no position matches the contrain, the one with the largest intersection of the source region with the constrain will be used, and this alignable will be resized to fit the constrain region.\n     *\n     * @param {Object} config A config object with other configuration for this method\n     *\n     * @param {Array[]/Object[]/Object} config.offset The offset to use for aligning. If more that one offset is specified, then offset at a given index is used with the position at the same index.\n     *\n     * An offset can have the following form:\n     *\n     *      [left_offset, top_offset]\n     *      {left: left_offset, top: top_offset}\n     *      {x: left_offset, y: top_offset}\n     *\n     * You can pass one offset or an array of offsets. In case you pass just one offset,\n     * it cannot have the array form, so you cannot call\n     *\n     *      this.alignTo(target, positions, [10, 20])\n     *\n     * If you do, it will not be considered. Instead, please use\n     *\n     *      this.alignTo(target, positions, {x: 10, y: 20})\n     *\n     * Or\n     *\n     *      this.alignTo(target, positions, [[10, 20]] )\n     *\n     * @param {Boolean/Element/Region} config.constrain If boolean, target will be constrained to the document region, otherwise,\n     * getRegion will be called on this argument to determine the region we need to constrain to.\n     *\n     * @param {Boolean/Object} config.sync Either boolean or an object with {width, height}. If it is boolean,\n     * both width and height will be synced. If directions are specified, will only sync the direction which is specified as true\n     *\n     * @return {String}\n     *\n     */\nRegion.prototype.alignTo = function(target, positions, config){\n\n    config = config || {}\n\n    var sourceRegion = this\n    var targetRegion = Region.from(target)\n\n    var result = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var resultRegion = result.region\n\n    if (!resultRegion.equalsSize(sourceRegion)){\n        this.setSize(resultRegion.getSize())\n    }\n    if (!resultRegion.equalsPosition(sourceRegion)){\n        this.setPosition(resultRegion.getPosition(), { absolute: !!config.absolute })\n    }\n\n    return result.position\n}\n\nmodule.exports = Region"
        },
        {
          "id": 61,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/getInstantiatorFunction.js",
          "name": "./~/newify/getInstantiatorFunction.js",
          "size": 512,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
          "profile": {
            "factory": 312,
            "building": 186
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 49,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
              "module": "./~/newify/index.js",
              "moduleName": "./~/newify/index.js",
              "type": "cjs require",
              "userRequest": "./getInstantiatorFunction",
              "loc": "1:30-66"
            }
          ],
          "source": "module.exports = function(){\n\n    'use strict';\n\n    var fns = {}\n\n    return function(len){\n\n        if ( ! fns [len ] ) {\n\n            var args = []\n            var i    = 0\n\n            for (; i < len; i++ ) {\n                args.push( 'a[' + i + ']')\n            }\n\n            fns[len] = new Function(\n                            'c',\n                            'a',\n                            'return new c(' + args.join(',') + ')'\n                        )\n        }\n\n        return fns[len]\n    }\n\n}()"
        },
        {
          "id": 62,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copy.js",
          "name": "./~/copy-utils/copy.js",
          "size": 677,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 301,
            "building": 187
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copy",
              "loc": "22:14-31"
            }
          ],
          "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\n\n/**\n * Copies all properties from source to destination\n *\n *      copy({name: 'jon',age:5}, this);\n *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT ){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) ) {\n            destination[i] = source[i]\n        }\n\n    }\n\n    return destination\n}"
        },
        {
          "id": 63,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyIf.js",
          "name": "./~/copy-utils/copyIf.js",
          "size": 754,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 301,
            "building": 196
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyIf",
              "loc": "35:16-35"
            }
          ],
          "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties from source to destination, if the property does not exist into the destination\n *\n *      copyIf({name: 'jon',age:5}, {age:7})\n *      // => { name: 'jon', age: 7}\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) && (typeof destination[i] === STR_UNDEFINED) ) {\n\n            destination[i] = source[i]\n\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 64,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyList.js",
          "name": "./~/copy-utils/copyList.js",
          "size": 900,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 301,
            "building": 192
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyList",
              "loc": "77:18-39"
            },
            {
              "moduleId": 66,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeys.js",
              "module": "./~/copy-utils/copyKeys.js",
              "moduleName": "./~/copy-utils/copyKeys.js",
              "type": "cjs require",
              "userRequest": "./copyList",
              "loc": "7:15-36"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination\n *\n *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n *      // => {name: 'jon', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len; i++ ){\n        propName = list[i]\n\n        if ( typeof source[propName] !== STR_UNDEFINED ) {\n            destination[list[i]] = source[list[i]]\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 65,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyListIf.js",
          "name": "./~/copy-utils/copyListIf.js",
          "size": 1067,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 301,
            "building": 197
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyListIf",
              "loc": "91:20-43"
            },
            {
              "moduleId": 67,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeysIf.js",
              "module": "./~/copy-utils/copyKeysIf.js",
              "moduleName": "./~/copy-utils/copyKeysIf.js",
              "type": "cjs require",
              "userRequest": "./copyListIf",
              "loc": "7:17-40"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n *\n *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n *      // => {name: 'jon', age: 10}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len ; i++ ){\n        propName = list[i]\n        if (\n                (typeof source[propName]      !== STR_UNDEFINED) &&\n                (typeof destination[propName] === STR_UNDEFINED)\n            ){\n            destination[propName] = source[propName]\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 66,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeys.js",
          "name": "./~/copy-utils/copyKeys.js",
          "size": 1534,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 302,
            "building": 202,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyKeys",
              "loc": "105:18-39"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyList = require('./copyList')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination\n *\n *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n *      // => {name: 'jon', age: 5, theYear: 2006}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyList(source, destination, namedKeys)\n    }\n\n    if (\n           source != null && typeof source    === STR_OBJECT &&\n        namedKeys != null && typeof namedKeys === STR_OBJECT\n    ) {\n        var typeOfNamedProperty\n        var namedPropertyValue\n\n        for  (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n            namedPropertyValue  = namedKeys[propName]\n            typeOfNamedProperty = typeof namedPropertyValue\n\n            if (typeof source[propName] !== STR_UNDEFINED){\n                destination[typeOfNamedProperty == 'string'? namedPropertyValue : propName] = source[propName]\n            }\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 67,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeysIf.js",
          "name": "./~/copy-utils/copyKeysIf.js",
          "size": 1869,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 302,
            "building": 206,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 50,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
              "module": "./~/copy-utils/index.js",
              "moduleName": "./~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyKeysIf",
              "loc": "120:20-43"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyListIf = require('./copyListIf')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination,\n * but only if the property does not already exist in the destination object\n *\n *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n *      // => {aname: 'test', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyListIf(source, destination, namedKeys)\n    }\n\n    if (\n               source != null && typeof source    === STR_OBJECT &&\n            namedKeys != null && typeof namedKeys === STR_OBJECT\n        ) {\n\n            var typeOfNamedProperty\n            var namedPropertyValue\n            var newPropertyName\n\n            for (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n\n                namedPropertyValue  = namedKeys[propName]\n                typeOfNamedProperty = typeof namedPropertyValue\n                newPropertyName     = typeOfNamedProperty == 'string'? namedPropertyValue : propName\n\n                if (\n                        typeof      source[propName]        !== STR_UNDEFINED &&\n                        typeof destination[newPropertyName] === STR_UNDEFINED\n                    ) {\n                    destination[newPropertyName] = source[propName]\n                }\n\n            }\n        }\n\n    return destination\n}"
        },
        {
          "id": 68,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "name": "../react-menus/lib/Menu.js",
          "size": 13929,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "profile": {
            "factory": 625,
            "building": 324,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 30,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
              "module": "/usr/lib/~/react-menus/lib/index.js",
              "moduleName": "/usr/lib/~/react-menus/lib/index.js",
              "type": "cjs require",
              "userRequest": "./Menu",
              "loc": "3:16-33"
            },
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "../Menu",
              "loc": "9:11-29"
            },
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "./Menu",
              "loc": "38:19-36"
            },
            {
              "moduleId": 110,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
              "module": "../react-menus/lib/MenuItem/prepareChildren.js",
              "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
              "type": "cjs require",
              "userRequest": "../Menu",
              "loc": "3:19-37"
            }
          ],
          "source": "'use strict';\n\nfunction emptyFn(){}\n\nvar React      = require('react')\nvar assign     = require('object-assign')\nvar Region     = require('region')\nvar inTriangle = require('point-in-triangle')\n\nvar getConstrainRegion = require('./align/getConstrainRegion')\nvar getItemStyleProps = require('./getItemStyleProps')\nvar renderSubMenu     = require('./renderSubMenu')\nvar renderChildren    = require('./renderChildren')\nvar prepareItem       = require('./prepareItem')\n\nvar propTypes = require('./propTypes')\nvar ScrollContainer = require('./ScrollContainer')\n\nvar MenuClass = React.createClass({\n\n    displayName: 'Menu',\n\n    propTypes: propTypes,\n\n    getDefaultProps: function(){\n\n        return {\n            isMenu: true,\n            enableScroll: true,\n            constrainTo: true,\n            defaultStyle: {\n                border  : '1px solid gray',\n                display : 'inline-block',\n                position: 'relative'\n            },\n            defaultSubMenuStyle: {\n                position: 'absolute'\n            },\n            scrollerProps: {\n            },\n            columns: ['label'],\n            items: null,\n            visible: true,\n            subMenuConstrainMargin: 10,\n\n            defaultItemStyle: {},\n            itemStyle: {},\n            defaultItemOverStyle: {},\n            itemOverStyle: {},\n            defaultItemDisabledStyle: {},\n            itemDisabledStyle: {},\n            defaultItemExpandedStyle: {},\n            itemExpandedStyle: {},\n\n            defaultCellStyle: {},\n            cellStyle: {},\n\n            stopClickPropagation: true\n        }\n    },\n\n    getInitialState: function() {\n        return {\n            mouseOver: false\n        }\n    },\n\n    componentDidMount: function() {\n        ;(this.props.onMount || emptyFn)(this)\n\n        if ((this.props.constrainTo || this.props.alignTo) && !this.props.subMenu){\n            setTimeout(function(){\n\n                if (!this.isMounted()){\n                    return\n                }\n                var props = this.props\n\n                var scrollRegion = Region.from(this.refs.scrollContainer.getDOMNode())\n                var domNode      = this.getDOMNode()\n                var domRegion    = Region.from(domNode)\n                var paddingSize  = domRegion.height\n\n                var actualHeight = scrollRegion.height + paddingSize\n                //get clientHeight of this dom node, so as to account for padding\n\n                //build the actual region of the menu\n                var actualRegion = Region({\n                    left  : domRegion.left,\n                    right : domRegion.right,\n\n                    top   : domRegion.top,\n                    bottom: domRegion.top + actualHeight\n                })\n\n                var constrainRegion = props.constrainTo?\n                                        getConstrainRegion(props.constrainTo):\n                                        null\n\n                var newState\n\n                if (props.alignTo){\n                    var parentRegion = Region.from(domNode.parentNode)\n                    var alignRegion = Region.from(props.alignTo)\n\n                    actualRegion.alignTo(alignRegion, props.alignPositions, {\n                        offset: props.alignOffset,\n                        constrain: constrainRegion\n                    })\n\n                    var newTop = actualRegion.top - parentRegion.top\n                    var newLeft = actualRegion.left - parentRegion.left\n\n                    newState = {\n                        style: {\n                            left: newLeft,\n                            top : newTop\n                        }\n                    }\n                }\n\n                if (constrainRegion){\n                    newState = newState || {}\n\n                    if (actualRegion.bottom > constrainRegion.bottom){\n                        newState.maxHeight = constrainRegion.bottom - actualRegion.top - paddingSize\n                    }\n                }\n\n                newState && this.setState(newState)\n            }.bind(this), 0)\n        }\n    },\n\n    prepareProps: function(thisProps, state) {\n        var props = {}\n\n        assign(props, this.props)\n\n        props.style     = this.prepareStyle(props, state)\n        props.className = this.prepareClassName(props)\n\n        props.itemStyleProps = getItemStyleProps(props, state)\n        props.children  = this.prepareChildren(props, state)\n\n        props.scrollerProps = this.prepareScrollerProps(props)\n\n        return props\n    },\n\n    prepareScrollerProps: function(props) {\n        return assign({}, props.scrollerProps)\n    },\n\n    prepareChildren: function(props, state){\n\n        var children = props.children\n\n        if (props.items){\n            children = props.items.map(this.prepareItem.bind(this, props, state))\n        }\n\n        return children\n    },\n\n    prepareItem: prepareItem,\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' z-menu'\n\n        return className\n    },\n\n    prepareStyle: function(props, state) {\n        var subMenuStyle = props.subMenu?\n                            props.defaultSubMenuStyle:\n                            null\n\n        var style = assign({}, props.defaultStyle, subMenuStyle, props.style)\n\n        if (!props.visible){\n            style.display = 'none'\n        }\n\n        if (props.absolute){\n            style.position = 'absolute'\n        }\n\n        if (props.at){\n            var isArray = Array.isArray(props.at)\n            var coords = {\n                left: isArray?\n                        props.at[0]:\n                        props.at.left === undefined?\n                            props.at.x || props.at.pageX:\n                            props.at.left,\n\n                top: isArray?\n                        props.at[1]:\n                        props.at.top === undefined?\n                            props.at.y || props.at.pageY:\n                            props.at.top\n            }\n\n            assign(style, coords)\n        }\n\n        if (state.style){\n            assign(style, state.style)\n        }\n\n        if (!this.isMounted() && (props.constrainTo || props.alignTo) && !props.subMenu){\n            //when a top menu is initially rendered (and should be constrained or has alignTo)\n            //we show it hidden initially, so we can safely constrain and/or align it\n            style.visibility = 'hidden'\n            style.maxHeight  = 0\n            style.overflow   = 'hidden'\n        }\n\n        return style\n    },\n\n    /////////////// RENDERING LOGIC\n\n    renderSubMenu: renderSubMenu,\n\n    render: function() {\n        var state = this.state\n        var props = this.prepareProps(this.props, state)\n\n        var menu     = this.renderSubMenu(props, state)\n        var children = this.renderChildren(props, state)\n\n        return (\n            React.createElement(\"div\", React.__spread({},  props), \n                menu, \n                React.createElement(ScrollContainer, {\n                    onMouseEnter: this.handleMouseEnter, \n                    onMouseLeave: this.handleMouseLeave, \n                    scrollerProps: props.scrollerProps, \n                    ref: \"scrollContainer\", enableScroll: props.enableScroll, maxHeight: state.maxHeight || props.maxHeight}, \n                    React.createElement(\"table\", {ref: \"table\"}, \n                        React.createElement(\"tbody\", null, \n                            children\n                        )\n                    )\n                )\n            )\n        )\n    },\n\n    renderChildren: renderChildren,\n\n    ////////////////////////// BEHAVIOUR LOGIC\n\n    handleMouseEnter: function() {\n        this.setState({\n            mouseInside: true\n        })\n\n        this.onActivate()\n    },\n\n    handleMouseLeave: function() {\n        this.setState({\n            mouseInside: false\n        })\n\n        if (!this.state.menu && !this.state.nextItem){\n        // if (!this.state.nextItem){\n            this.onInactivate()\n        }\n    },\n\n    onActivate: function() {\n        if (!this.state.activated){\n            // console.log('activate')\n            this.setState({\n                activated: true\n            })\n\n            ;(this.props.onActivate || emptyFn)()\n        }\n    },\n\n    onInactivate: function() {\n        if (this.state.activated){\n\n            this.setState({\n                activated: false\n            })\n\n            // console.log('inactivate')\n            ;(this.props.onInactivate || emptyFn)()\n        }\n    },\n\n    //we also need mouseOverSubMenu: Boolean\n    //since when from a submenu we move back to a parent menu, we may move\n    //to a different menu item than the one that triggered the submenu\n    //so we should display another submenu\n    handleSubMenuMouseEnter: function() {\n        this.setState({\n            mouseOverSubMenu: true\n        })\n    },\n\n    handleSubMenuMouseLeave: function() {\n        this.setState({\n            mouseOverSubMenu: false\n        })\n    },\n\n    isSubMenuActive: function() {\n        return this.state.subMenuActive\n    },\n\n    onSubMenuActivate: function() {\n        this.setState({\n            subMenuActive: true\n        })\n    },\n\n    onSubMenuInactivate: function() {\n        var ts = +new Date()\n\n        var nextItem      = this.state.nextItem\n        var nextTimestamp = this.state.nextTimestamp || 0\n\n        this.setState({\n            subMenuActive: false,\n            timestamp       : ts\n        }, function(){\n\n            setTimeout(function(){\n                if (ts != this.state.timestamp || (nextItem && (ts - nextTimestamp < 100))){\n                    //a menu show has occured in the mean-time,\n                    //so skip hiding the menu\n                    this.setItem(this.state.nextItem, this.state.nextOffset)\n                    return\n                }\n\n                if (!this.isSubMenuActive()){\n                    this.setItem()\n                }\n            }.bind(this), 10)\n\n        })\n\n    },\n\n    removeMouseMoveListener: function() {\n        if (this.onWindowMouseMove){\n            window.removeEventListener('mousemove', this.onWindowMouseMove)\n            this.onWindowMouseMove = null\n        }\n    },\n\n    onMenuItemMouseOut: function(itemProps, leaveOffset) {\n        if (this.state.menu){\n            this.setupCheck(leaveOffset)\n        }\n    },\n\n    /**\n     * Called when mouseout happens on the item for which there is a submenu displayed\n     */\n    onMenuItemMouseOver: function(itemProps, menuOffset, entryPoint) {\n\n        if (!this.isMounted()){\n            return\n        }\n\n        var menu = itemProps.menu\n        var ts   = +new Date()\n\n        if (!menu){\n            return\n        }\n\n        if (!this.state.menu){\n            //there is no menu visible, so it's safe to show the menu\n            this.setItem(itemProps, menuOffset)\n        } else {\n            //there is a menu visible, from the previous item that had mouse over\n            //so we should queue this item's menu as the next menu to be shown\n            this.setNextItem(itemProps, menuOffset)\n        }\n    },\n\n    setupCheck: function(offset){\n        if (!this.isMounted()){\n            return\n        }\n\n        var tolerance = 5\n\n        var domNode    = this.getDOMNode()\n        var menuNode   = domNode.querySelector('.z-menu')\n\n        if (!menuNode){\n            return\n        }\n\n        var menuRegion = Region.from(menuNode)\n\n        var x1 = menuRegion.left\n        var y1 = menuRegion.top// - tolerance\n\n        var x2 = menuRegion.left\n        var y2 = menuRegion.bottom// + tolerance\n\n        if (this.subMenuPosition == 'left'){\n            x1 = menuRegion.right\n            x2 = menuRegion.right\n        }\n\n        var x3 = offset.x + (this.subMenuPosition == 'left'? tolerance: -tolerance)\n        var y3 = offset.y\n\n        var triangle = [\n            [x1, y1],\n            [x2, y2],\n            [x3, y3]\n        ]\n\n        this.removeMouseMoveListener()\n\n        this.onWindowMouseMove = function(event){\n\n            var point = [event.pageX, event.pageY]\n\n            if (!inTriangle(point, triangle)){\n\n                this.removeMouseMoveListener()\n\n                if (!this.state.mouseOverSubMenu){\n                    //the mouse is not over a sub menu item\n                    //\n                    //so we show a menu of a sibling item, or hide the menu\n                    //if no sibling item visited\n                    this.setItem(this.state.nextItem, this.state.nextOffset)\n                }\n            }\n        }.bind(this)\n\n        window.addEventListener('mousemove', this.onWindowMouseMove)\n    },\n\n    setNextItem: function(itemProps, menuOffset) {\n\n        var ts = +new Date()\n\n        this.setState({\n            timestamp        : ts,\n\n            nextItem     : itemProps,\n            nextOffset   : menuOffset,\n            nextTimestamp: +new Date()\n        })\n    },\n\n    setItem: function(itemProps, offset) {\n\n        var menu = itemProps?\n                        itemProps.menu:\n                        null\n\n        // if (!menu){\n        //     return\n        // }\n\n        this.removeMouseMoveListener()\n\n        if (!this.isMounted()){\n            return\n        }\n\n        if (!menu && !this.state.mouseInside){\n            this.onInactivate()\n        }\n\n        this.setState({\n            itemProps    : itemProps,\n\n            menu         : menu,\n            menuOffset   : offset,\n            timestamp    : +new Date(),\n\n            nextItem     : null,\n            nextOffset   : null,\n            nextTimestamp: null\n        })\n    },\n\n    onMenuItemClick: function(props, index, event) {\n        var stopped = event.isPropagationStopped()\n\n        props.stopClickPropagation && event.stopPropagation()\n\n        if (!stopped){\n            ;(this.props.onClick || emptyFn)(event, props, index)\n        }\n    }\n})\n\nmodule.exports = MenuClass"
        },
        {
          "id": 69,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
          "name": "../react-menus/lib/MenuItemCell.js",
          "size": 1331,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "profile": {
            "factory": 685,
            "building": 280,
            "dependencies": 332
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 30,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
              "module": "/usr/lib/~/react-menus/lib/index.js",
              "moduleName": "/usr/lib/~/react-menus/lib/index.js",
              "type": "cjs require",
              "userRequest": "./MenuItemCell",
              "loc": "6:20-45"
            },
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "../MenuItemCell",
              "loc": "10:19-45"
            },
            {
              "moduleId": 106,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
              "module": "../react-menus/lib/renderChildren.js",
              "moduleName": "../react-menus/lib/renderChildren.js",
              "type": "cjs require",
              "userRequest": "./MenuItemCell",
              "loc": "4:19-44"
            },
            {
              "moduleId": 110,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
              "module": "../react-menus/lib/MenuItem/prepareChildren.js",
              "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
              "type": "cjs require",
              "userRequest": "../MenuItemCell",
              "loc": "4:19-45"
            },
            {
              "moduleId": 120,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
              "module": "../react-menus/lib/MenuItem/renderCell.js",
              "moduleName": "../react-menus/lib/MenuItem/renderCell.js",
              "type": "cjs require",
              "userRequest": "../MenuItemCell",
              "loc": "4:19-45"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign =require('object-assign')\nvar arrowStyle =require('arrow-style')\n\nfunction expanderStyle(){\n    var style = arrowStyle('right', {\n        width: 8,\n        height: 4\n    })\n\n    style.display = 'inline-block'\n\n    return style\n}\n\nvar MenuItemCell = React.createClass({\n\n    displayName: 'ReactMenuItemCell',\n\n    getDefaultProps: function() {\n        return {\n            defaultStyle: {\n                padding: 10,\n                whiteSpace: 'nowrap'\n            }\n        }\n    },\n\n    render: function() {\n        var props    = this.prepareProps(this.props)\n        var children = props.children\n\n        if (props.expander){\n            children = props.expander === true? '›': props.expander\n        }\n\n        return (\n            React.createElement(\"td\", React.__spread({},  props), \n                children\n            )\n        )\n    },\n\n    prepareProps: function(thisProps) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.style = this.prepareStyle(props)\n        // if (props.onMouseOver){\n        //     debugger\n        // }\n\n        return props\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        return style\n    }\n})\n\nmodule.exports = MenuItemCell"
        },
        {
          "id": 70,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
          "name": "../react-menus/lib/MenuSeparator.js",
          "size": 1149,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "profile": {
            "factory": 685,
            "building": 288,
            "dependencies": 324
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 30,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
              "module": "/usr/lib/~/react-menus/lib/index.js",
              "moduleName": "/usr/lib/~/react-menus/lib/index.js",
              "type": "cjs require",
              "userRequest": "./MenuSeparator",
              "loc": "7:20-46"
            },
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "./MenuSeparator",
              "loc": "9:22-48"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nvar emptyFn = function(){}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactMenuSeparator',\n\n    getDefaultProps: function() {\n        return {\n            defaultStyle: {\n                cursor: 'auto'\n            },\n            border: '1px solid gray'\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props)\n\n        return React.createElement(\"tr\", React.__spread({},  props), React.createElement(\"td\", {colSpan: 10}))\n    },\n\n    prepareProps: function(thisProps) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.style = this.prepareStyle(props)\n        props.className = this.prepareClassName(props)\n\n        return props\n    },\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' menu-separator'\n\n        return className\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, {\n            borderTop: props.border\n        }, props.style)\n\n        return style\n    }\n})"
        },
        {
          "id": 71,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "name": "../react-menus/lib/MenuItem/index.js",
          "size": 5526,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "profile": {
            "factory": 687,
            "building": 318,
            "dependencies": 294
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 30,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
              "module": "/usr/lib/~/react-menus/lib/index.js",
              "moduleName": "/usr/lib/~/react-menus/lib/index.js",
              "type": "cjs require",
              "userRequest": "./MenuItem",
              "loc": "5:20-41"
            },
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "./MenuItem",
              "loc": "7:22-43"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\nvar Region = require('region')\nvar selectParent = require('select-parent')\n\nvar prepareChildren = require('./prepareChildren')\nvar Menu = require('../Menu')\nvar MenuItemCell = require('../MenuItemCell')\n\nvar emptyFn = function(){}\n\nvar MenuItem = React.createClass({\n\n    displayName: 'ReactMenuItem',\n\n    getInitialState: function() {\n        return {}\n    },\n\n    getDefaultProps: function() {\n        return {\n            isMenuItem: true,\n            defaultStyle: {\n                cursor: 'pointer',\n                background: 'white'\n            },\n            defaultOverStyle: {\n                background: '#d7e7ff'\n            },\n            defaultActiveStyle: {\n                background: 'rgb(187, 212, 251)'\n            },\n            defaultExpandedStyle: {\n                background: 'rgb(230, 240, 255)'\n            },\n            defaultDisabledStyle: {\n                color: 'gray',\n                cursor: 'default'\n            },\n            expander: '›'\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props, this.state)\n\n        return React.createElement(\"tr\", React.__spread({},  props))\n    },\n\n    prepareProps: function(thisProps, state) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.mouseOver = !!state.mouseOver\n        props.active    = !!state.active\n        props.disabled    = !!props.disabled\n\n        props.style     = this.prepareStyle(props)\n        props.className = this.prepareClassName(props)\n\n        props.children  = this.prepareChildren(props)\n\n        props.onClick      = this.handleClick\n        props.onMouseEnter = this.handleMouseEnter.bind(this, props)\n        props.onMouseLeave = this.handleMouseLeave.bind(this, props)\n        props.onMouseDown  = this.handleMouseDown\n        props.onMouseMove  = this.handleMouseMove\n\n        return props\n    },\n\n    handleClick: function(event) {\n\n        var props = this.props\n\n        if (props.disabled){\n            event.stopPropagation()\n            return\n        }\n\n        ;(props.onClick || props.fn || emptyFn)(props, props.index, event)\n    },\n\n    handleMouseMove: function(event){\n\n    },\n\n    handleMouseDown: function(event) {\n        // event.preventDefault()\n\n        var mouseUpListener = function(){\n            this.setState({\n                active: false\n            })\n            window.removeEventListener('mouseup', mouseUpListener)\n        }.bind(this)\n\n        window.addEventListener('mouseup', mouseUpListener)\n\n        this.setState({\n            active: true\n        })\n    },\n\n    showMenu: function(menu, props) {\n\n        props.showMenu(menu, offset)\n    },\n\n    handleMouseEnter: function(props, event) {\n\n        if (props.disabled){\n            return\n        }\n\n        var offset = {\n            x: event.pageX,\n            y: event.pageY\n        }\n\n        this.setState({\n            mouseOver: true\n        })\n\n        if (props.onMenuItemMouseOver){\n\n            var menuOffset\n\n            if (props.menu){\n                var menuRegion = Region.from(selectParent('.z-menu', this.getDOMNode()))\n                var thisRegion = Region.from(this.getDOMNode())\n\n                menuOffset = {\n                    // pageX : thisRegion.left,\n                    // pageY : thisRegion.top,\n\n                    left  : thisRegion.left - menuRegion.left,\n                    top   : thisRegion.top  - menuRegion.top,\n                    width : thisRegion.width,\n                    height: thisRegion.height\n                }\n            }\n\n            props.onMenuItemMouseOver(props, menuOffset, offset)\n        }\n    },\n\n    handleMouseLeave: function(props, event) {\n\n        if (props.disabled){\n            return\n        }\n\n        var offset = {\n            x: event.pageX,\n            y: event.pageY\n        }\n\n        if (this.isMounted()){\n            this.setState({\n                active: false,\n                mouseOver: false\n            })\n        }\n\n        if (props.onMenuItemMouseOut){\n            props.onMenuItemMouseOut(props, offset)\n        }\n    },\n\n    prepareChildren: prepareChildren,\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' menu-row'\n\n        if (props.disabled){\n            className += ' disabled ' + (props.disabledClassName || '')\n        } else {\n\n            if (props.mouseOver){\n                className += ' over ' + (props.overClassName || '')\n            }\n\n            if (props.active){\n                className += ' active ' + (props.activeClassName || '')\n            }\n\n            if (props.expanded){\n                className += ' expanded ' + (props.expandedClassName || '')\n            }\n        }\n\n        return className\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        if (props.disabled){\n\n            assign(style, props.defaultDisabledStyle, props.disabledStyle)\n\n        } else {\n\n            if (props.expanded){\n                assign(style, props.defaultExpandedStyle, props.expandedStyle)\n            }\n\n            if (props.mouseOver){\n                assign(style, props.defaultOverStyle, props.overStyle)\n            }\n\n            if (props.active){\n                assign(style, props.defaultActiveStyle, props.activeStyle)\n            }\n        }\n\n        return style\n    }\n})\n\nmodule.exports = MenuItem"
        },
        {
          "id": 72,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "name": "./~/i-s/src/index.js",
          "size": 489,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
          "profile": {
            "factory": 374,
            "building": 331
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 51,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
              "module": "./~/i-s/index.js",
              "moduleName": "./~/i-s/index.js",
              "type": "cjs require",
              "userRequest": "./src",
              "loc": "1:17-33"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = {\n    'numeric'  : require('./numeric'),\n    'number'   : require('./number'),\n    'int'      : require('./int'),\n    'float'    : require('./float'),\n    'string'   : require('./string'),\n    'function' : require('./function'),\n    'object'   : require('./object'),\n    'arguments': require('./arguments'),\n    'boolean'  : require('./boolean'),\n    'date'     : require('./date'),\n    'regexp'   : require('./regexp'),\n    'array'    : require('./array')\n}"
        },
        {
          "id": 73,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.static.js",
          "name": "./~/region-align/Region.static.js",
          "size": 2874,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "profile": {
            "factory": 29,
            "building": 302,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 60,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
              "module": "./~/region-align/index.js",
              "moduleName": "./~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./Region.static",
              "loc": "5:0-26"
            }
          ],
          "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n * @static\n * Aligns the source region to the target region, so as to correspond to the given alignment.\n *\n * NOTE that this method makes changes on the sourceRegion in order for it to be aligned as specified.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n *\n * @param {String} align A string with 2 valid align positions, eg: 'tr-bl'.\n * For valid positions, see {@link Region#getPoint}\n *\n * Having 2 regions, we need to be able to align them as we wish:\n *\n * for example, if we have\n *\n *       source    target\n *       ________________\n *       ____\n *      |    |     ________\n *      |____|    |        |\n *                |        |\n *                |________|\n *\n * and we align 't-t', we get:\n *\n *       source    target\n *       _________________\n *\n *       ____      ________\n *      |    |    |        |\n *      |____|    |        |\n *                |________|\n *\n *  In this case, the source was moved down to be aligned to the top of the target\n *\n *\n * and if we align 'tc-tc' we get\n *\n *       source     target\n *       __________________\n *\n *                 ________\n *                | |    | |\n *                | |____| |\n *                |________|\n *\n *  Since the source was moved to have the top-center point to be the same with target top-center\n *\n *\n *\n * @return {RegionClass} The Region class\n */\nRegion.align = function(sourceRegion, targetRegion, align){\n\n    targetRegion = Region.from(targetRegion)\n\n    align = (align || 'c-c').split('-')\n\n    //<debug>\n    if (align.length != 2){\n        console.warn('Incorrect region alignment! The align parameter need to be in the form \\'br-c\\', that is, a - separated string!', align)\n    }\n    //</debug>\n\n    return Region.alignToPoint(sourceRegion, targetRegion.getPoint(align[1]), align[0])\n}\n\n/**\n * Modifies the given region to be aligned to the point, as specified by anchor\n *\n * @param {Region} region The region to align to the point\n * @param {Object} point The point to be used as a reference\n * @param {Number} point.x\n * @param {Number} point.y\n * @param {String} anchor The position where to anchor the region to the point. See {@link #getPoint} for available options/\n *\n * @return {Region} the given region\n */\nRegion.alignToPoint = function(region, point, anchor){\n\n    region = Region.from(region)\n\n    var sourcePoint = region.getPoint(anchor)\n    var count       = 0\n    var shiftObj    = {}\n\n    if (\n            sourcePoint.x != null &&\n            point.x != null\n        ){\n\n            count++\n            shiftObj.left = point.x - sourcePoint.x\n    }\n\n    if (\n            sourcePoint.y != null &&\n            point.y != null\n        ){\n            count++\n            shiftObj.top = point.y - sourcePoint.y\n    }\n\n    if (count){\n\n        region.shift(shiftObj)\n\n    }\n\n    return region\n}"
        },
        {
          "id": 74,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.proto.js",
          "name": "./~/region-align/Region.proto.js",
          "size": 789,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "profile": {
            "factory": 29,
            "building": 313,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 60,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
              "module": "./~/region-align/index.js",
              "moduleName": "./~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./Region.proto",
              "loc": "6:0-25"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\n\n/**\n *\n * Aligns this region to the given region\n * @param {Region} region\n * @param {String} alignPositions For available positions, see {@link #getPoint}\n *\n *     eg: 'tr-bl'\n *\n * @return this\n */\nRegion.prototype.alignToRegion = function(region, alignPositions){\n    Region.align(this, region, alignPositions)\n\n    return this\n}\n\n/**\n * Aligns this region to the given point, in the anchor position\n * @param {Object} point eg: {x: 20, y: 600}\n * @param {Number} point.x\n * @param {Number} point.y\n *\n * @param {String} anchor For available positions, see {@link #getPoint}\n *\n *     eg: 'bl'\n *\n * @return this\n */\n Region.prototype.alignToPoint = function(point, anchor){\n    Region.alignToPoint(this, point, anchor)\n\n    return this\n}"
        },
        {
          "id": 75,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
          "name": "./~/region-align/computeAlignRegion.js",
          "size": 3447,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "profile": {
            "factory": 29,
            "building": 307,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 60,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
              "module": "./~/region-align/index.js",
              "moduleName": "./~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./computeAlignRegion",
              "loc": "8:27-58"
            }
          ],
          "source": "'use strict'\n\nvar ALIGN_TO_NORMALIZED = require('./alignToNormalized')\n\nvar Region = require('region')\n\n/**\n * @localdoc Given source and target regions, and the given alignments required, returns a region that is the resulting allignment.\n * Does not modify the sourceRegion.\n *\n * Example\n *\n *      var sourceRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *\n *      var targetRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *      //has top-left at (10,10)\n *      //and bottom-right at (40, 100)\n *\n *      var alignRegion = alignable.COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, 'tl-br')\n *\n *      //alignRegion will be a clone of sourceRegion, but will have the\n *      //top-left corner aligned with bottom-right of targetRegion\n *\n *      alignRegion.get() // => { top: 40, left: 100, bottom: 70, right: 190 }\n *\n * @param  {Region} sourceRegion The source region to align to targetRegion\n * @param  {Region} targetRegion The target region to which to align the sourceRegion\n * @param  {String/String[]} positions    A string ( delimited by \"-\" characters ) or an array of strings with the position to try, in the order of their priority.\n * See Region#getPoint for a list of available positions. They can be combined in any way.\n * @param  {Object} config      A config object with other configuration for the alignment\n * @param  {Object/Object[]} config.offset      Optional offsets. Either an object or an array with a different offset for each position\n * @param  {Element/Region/Boolean} config.constrain  The constrain to region or element. If the boolean true, Region.getDocRegion() will be used\n * @param  {Object/Boolean} config.sync   A boolean object that indicates whether to sync sourceRegion and targetRegion sizes (width/height or both). Can be\n *\n *  * true - in order to sync both width and height\n *  * { width: true }  - to only sync width\n *  * { height: true } - to only sync height\n *  * { size: true }   - to sync both width and height\n *\n * @return {Object} an object with the following keys:\n *\n *  * position - the position where the alignment was made. One of the given positions\n *  * region   - the region where the alignment is in place\n *  * positionChanged - boolean value indicating if the position of the returned region is different from the position of sourceRegion\n *  * widthChanged    - boolean value indicating if the width of the returned region is different from the width of sourceRegion\n *  * heightChanged   - boolean value indicating if the height of the returned region is different from the height of sourceRegion\n */\nfunction COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config){\n    sourceRegion = Region.from(sourceRegion)\n\n    var sourceClone = sourceRegion.clone()\n    var position    = ALIGN_TO_NORMALIZED(sourceClone, targetRegion, positions, config)\n\n    return {\n        position        : position,\n        region          : sourceClone,\n        widthChanged    : sourceClone.getWidth() != sourceRegion.getWidth(),\n        heightChanged   : sourceClone.getHeight() != sourceRegion.getHeight(),\n        positionChanged : sourceClone.equalsPosition(sourceRegion)\n    }\n}\n\n\nmodule.exports = COMPUTE_ALIGN_REGION"
        },
        {
          "id": 76,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/ieee754/index.js",
          "name": "(webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js",
          "size": 2093,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "profile": {
            "factory": 411,
            "building": 156
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 53,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
              "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "type": "cjs require",
              "userRequest": "ieee754",
              "loc": "9:14-32"
            }
          ],
          "source": "exports.read = function(buffer, offset, isLE, mLen, nBytes) {\n  var e, m,\n      eLen = nBytes * 8 - mLen - 1,\n      eMax = (1 << eLen) - 1,\n      eBias = eMax >> 1,\n      nBits = -7,\n      i = isLE ? (nBytes - 1) : 0,\n      d = isLE ? -1 : 1,\n      s = buffer[offset + i];\n\n  i += d;\n\n  e = s & ((1 << (-nBits)) - 1);\n  s >>= (-nBits);\n  nBits += eLen;\n  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\n\n  m = e & ((1 << (-nBits)) - 1);\n  e >>= (-nBits);\n  nBits += mLen;\n  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\n\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity);\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function(buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c,\n      eLen = nBytes * 8 - mLen - 1,\n      eMax = (1 << eLen) - 1,\n      eBias = eMax >> 1,\n      rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\n      i = isLE ? 0 : (nBytes - 1),\n      d = isLE ? 1 : -1,\n      s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n  value = Math.abs(value);\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\n\n  e = (e << mLen) | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\n\n  buffer[offset + i - d] |= s * 128;\n};\n"
        },
        {
          "id": 77,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/is-array/index.js",
          "name": "(webpack)/~/node-libs-browser/~/buffer/~/is-array/index.js",
          "size": 470,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "profile": {
            "factory": 411,
            "building": 157
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 53,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
              "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "type": "cjs require",
              "userRequest": "is-array",
              "loc": "10:14-33"
            }
          ],
          "source": "\n/**\n * isArray\n */\n\nvar isArray = Array.isArray;\n\n/**\n * toString\n */\n\nvar str = Object.prototype.toString;\n\n/**\n * Whether or not the given `val`\n * is an array.\n *\n * example:\n *\n *        isArray([]);\n *        // > true\n *        isArray(arguments);\n *        // > false\n *        isArray('');\n *        // > false\n *\n * @param {mixed} val\n * @return {bool}\n */\n\nmodule.exports = isArray || function (val) {\n  return !! val && '[object Array]' == str.call(val);\n};\n"
        },
        {
          "id": 78,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/curry.js",
          "name": "./~/functionally/src/curry.js",
          "size": 581,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 270,
            "building": 142
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/curry",
              "loc": "78:16-38"
            },
            {
              "moduleId": 86,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/map.js",
              "module": "./~/functionally/src/map.js",
              "moduleName": "./~/functionally/src/map.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "3:12-30"
            },
            {
              "moduleId": 87,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/dot.js",
              "module": "./~/functionally/src/dot.js",
              "moduleName": "./~/functionally/src/dot.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "3:12-30"
            },
            {
              "moduleId": 88,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/maxArgs.js",
              "module": "./~/functionally/src/maxArgs.js",
              "moduleName": "./~/functionally/src/maxArgs.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "4:12-30"
            },
            {
              "moduleId": 89,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
              "module": "./~/functionally/src/newify.js",
              "moduleName": "./~/functionally/src/newify.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "4:13-31"
            }
          ],
          "source": "'use strict'\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
        },
        {
          "id": 79,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/compose.js",
          "name": "./~/functionally/src/compose.js",
          "size": 558,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 271,
            "building": 145
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/compose",
              "loc": "149:18-42"
            }
          ],
          "source": "'use strict'\n\nfunction composeTwo(f, g) {\n    return function () {\n        return f(g.apply(this, arguments))\n    }\n}\n\n/*\n * @param {Function...} an enumeration of functions, each consuming the result of the following function.\n *\n * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\n *\n * @return the result of the first function in the enumeration\n */\nmodule.exports = function(){\n\n    var args = arguments\n    var len  = args.length\n    var i    = 0\n    var f    = args[0]\n\n    while (++i < len) {\n        f = composeTwo(f, args[i])\n    }\n\n    return f\n}"
        },
        {
          "id": 80,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/chain.js",
          "name": "./~/functionally/src/chain.js",
          "size": 352,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 270,
            "building": 147
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/chain",
              "loc": "151:16-38"
            }
          ],
          "source": "'use strict'\n\nfunction chain(where, fn, secondFn){\n\n    return function(){\n        if (where === 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        var result = fn.apply(this, arguments)\n\n        if (where !== 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        return result\n    }\n}\n\nmodule.exports = chain"
        },
        {
          "id": 81,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/once.js",
          "name": "./~/functionally/src/once.js",
          "size": 263,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 288,
            "building": 130
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/once",
              "loc": "153:15-36"
            }
          ],
          "source": "'use once'\n\nfunction once(fn, scope){\n\n    var called\n    var result\n\n    return function(){\n        if (called){\n            return result\n        }\n\n        called = true\n\n        return result = fn.apply(scope || this, arguments)\n    }\n}\n\nmodule.exports = once"
        },
        {
          "id": 82,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgsArray.js",
          "name": "./~/functionally/src/bindArgsArray.js",
          "size": 298,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 288,
            "building": 133
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/bindArgsArray",
              "loc": "155:24-54"
            },
            {
              "moduleId": 83,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgs.js",
              "module": "./~/functionally/src/bindArgs.js",
              "moduleName": "./~/functionally/src/bindArgs.js",
              "type": "cjs require",
              "userRequest": "./bindArgsArray",
              "loc": "4:20-46"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n    return function(){\n        var thisArgs = SLICE.call(args || [])\n\n        if (arguments.length){\n            thisArgs.push.apply(thisArgs, arguments)\n        }\n\n        return fn.apply(this, thisArgs)\n    }\n}"
        },
        {
          "id": 83,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgs.js",
          "name": "./~/functionally/src/bindArgs.js",
          "size": 182,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 289,
            "building": 134,
            "dependencies": 61
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/bindArgs",
              "loc": "157:19-44"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar bindArgsArray = require('./bindArgsArray')\n\nmodule.exports = function(fn){\n    return bindArgsArray(fn, SLICE.call(arguments,1))\n}"
        },
        {
          "id": 84,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgsArray.js",
          "name": "./~/functionally/src/lockArgsArray.js",
          "size": 241,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 289,
            "building": 139
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/lockArgsArray",
              "loc": "159:24-54"
            },
            {
              "moduleId": 85,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgs.js",
              "module": "./~/functionally/src/lockArgs.js",
              "moduleName": "./~/functionally/src/lockArgs.js",
              "type": "cjs require",
              "userRequest": "./lockArgsArray",
              "loc": "4:20-46"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n\n    return function(){\n        if (!Array.isArray(args)){\n            args = SLICE.call(args || [])\n        }\n\n        return fn.apply(this, args)\n    }\n}"
        },
        {
          "id": 85,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgs.js",
          "name": "./~/functionally/src/lockArgs.js",
          "size": 183,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 289,
            "building": 140,
            "dependencies": 54
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/lockArgs",
              "loc": "161:19-44"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar lockArgsArray = require('./lockArgsArray')\n\nmodule.exports = function(fn){\n    return lockArgsArray(fn, SLICE.call(arguments, 1))\n}"
        },
        {
          "id": 86,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/map.js",
          "name": "./~/functionally/src/map.js",
          "size": 192,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 290,
            "building": 143,
            "dependencies": 50
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/map",
              "loc": "519:9-29"
            }
          ],
          "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(fn, value){\n    return value != undefined && typeof value.map?\n            value.map(fn):\n            fn(value)\n})"
        },
        {
          "id": 87,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/dot.js",
          "name": "./~/functionally/src/dot.js",
          "size": 148,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 290,
            "building": 146,
            "dependencies": 47
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/dot",
              "loc": "521:9-29"
            }
          ],
          "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(prop, value){\n    return value != undefined? value[prop]: undefined\n})"
        },
        {
          "id": 88,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/maxArgs.js",
          "name": "./~/functionally/src/maxArgs.js",
          "size": 211,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 291,
            "building": 149,
            "dependencies": 43
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/maxArgs",
              "loc": "523:13-37"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar curry = require('./curry')\n\nmodule.exports = function(fn, count){\n    return function(){\n        return fn.apply(this, SLICE.call(arguments, 0, count))\n    }\n}"
        },
        {
          "id": 89,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
          "name": "./~/functionally/src/newify.js",
          "size": 108,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "profile": {
            "factory": 291,
            "building": 152,
            "dependencies": 39
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 59,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
              "module": "./~/functionally/index.js",
              "moduleName": "./~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/newify",
              "loc": "642:12-35"
            }
          ],
          "source": "'use strict'\n\nvar newify = require('newify')\nvar curry  = require('./curry')\n\nmodule.exports = curry(newify)"
        },
        {
          "id": 90,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/base64-js/lib/b64.js",
          "name": "(webpack)/~/node-libs-browser/~/buffer/~/base64-js/lib/b64.js",
          "size": 3430,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "profile": {
            "factory": 474,
            "building": 180
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 53,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
              "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
              "type": "cjs require",
              "userRequest": "base64-js",
              "loc": "8:13-33"
            }
          ],
          "source": "var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n  var Arr = (typeof Uint8Array !== 'undefined')\n    ? Uint8Array\n    : Array\n\n\tvar PLUS   = '+'.charCodeAt(0)\n\tvar SLASH  = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER  = 'a'.charCodeAt(0)\n\tvar UPPER  = 'A'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n"
        },
        {
          "id": 91,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/numeric.js",
          "name": "./~/i-s/src/numeric.js",
          "size": 111,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 95,
            "building": 141
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./numeric",
              "loc": "4:17-37"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return !isNaN( parseFloat( value ) ) && isFinite( value )\n}"
        },
        {
          "id": 92,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/number.js",
          "name": "./~/i-s/src/number.js",
          "size": 105,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 95,
            "building": 142
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "5:17-36"
            },
            {
              "moduleId": 93,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/int.js",
              "module": "./~/i-s/src/int.js",
              "moduleName": "./~/i-s/src/int.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "3:13-32"
            },
            {
              "moduleId": 94,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/float.js",
              "module": "./~/i-s/src/float.js",
              "moduleName": "./~/i-s/src/float.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "3:13-32"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value === 'number' && isFinite(value)\n}"
        },
        {
          "id": 93,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/int.js",
          "name": "./~/i-s/src/int.js",
          "size": 143,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 96,
            "building": 143,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./int",
              "loc": "6:17-33"
            }
          ],
          "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseInt(value, 10))\n}"
        },
        {
          "id": 94,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/float.js",
          "name": "./~/i-s/src/float.js",
          "size": 181,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 97,
            "building": 143,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./float",
              "loc": "7:17-35"
            }
          ],
          "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseFloat(value, 10)) && !(value === parseInt(value, 10))\n}"
        },
        {
          "id": 95,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/string.js",
          "name": "./~/i-s/src/string.js",
          "size": 85,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 96,
            "building": 144
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./string",
              "loc": "8:17-36"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'string'\n}"
        },
        {
          "id": 96,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/function.js",
          "name": "./~/i-s/src/function.js",
          "size": 160,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 97,
            "building": 144
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./function",
              "loc": "9:17-38"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Function]'\n}"
        },
        {
          "id": 97,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/object.js",
          "name": "./~/i-s/src/object.js",
          "size": 158,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 96,
            "building": 147
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./object",
              "loc": "10:17-36"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Object]'\n}"
        },
        {
          "id": 98,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/arguments.js",
          "name": "./~/i-s/src/arguments.js",
          "size": 179,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 97,
            "building": 145
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./arguments",
              "loc": "11:17-39"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Arguments]' || !!value.callee\n}"
        },
        {
          "id": 99,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/boolean.js",
          "name": "./~/i-s/src/boolean.js",
          "size": 86,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 98,
            "building": 146
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./boolean",
              "loc": "12:17-37"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'boolean'\n}"
        },
        {
          "id": 100,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/date.js",
          "name": "./~/i-s/src/date.js",
          "size": 156,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 97,
            "building": 147
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./date",
              "loc": "13:17-34"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Date]'\n}"
        },
        {
          "id": 101,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/regexp.js",
          "name": "./~/i-s/src/regexp.js",
          "size": 158,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 98,
            "building": 150
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./regexp",
              "loc": "14:17-36"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object RegExp]'\n}"
        },
        {
          "id": 102,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/array.js",
          "name": "./~/i-s/src/array.js",
          "size": 81,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 98,
            "building": 151
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 72,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
              "module": "./~/i-s/src/index.js",
              "moduleName": "./~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./array",
              "loc": "15:17-35"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return Array.isArray(value)\n}"
        },
        {
          "id": 103,
          "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/alignToNormalized.js",
          "name": "./~/region-align/alignToNormalized.js",
          "size": 5225,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
          "profile": {
            "factory": 102,
            "building": 95,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 75,
              "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
              "module": "./~/region-align/computeAlignRegion.js",
              "moduleName": "./~/region-align/computeAlignRegion.js",
              "type": "cjs require",
              "userRequest": "./alignToNormalized",
              "loc": "3:26-56"
            }
          ],
          "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n *\n * This method is trying to align the sourceRegion to the targetRegion, given the alignment positions\n * and the offsets. It only modifies the sourceRegion\n *\n * This is all well and easy, but if there is a constrainTo region, the algorithm has to take it into account.\n * In this case, it works as follows.\n *\n *  * start with the first alignment position. Aligns the region, adds the offset and then check for the constraint.\n *  * if the constraint condition is ok, return the position.\n *  * otherwise, remember the intersection area, if the regions are intersecting.\n *  * then go to the next specified align position, and so on, computing the maximum intersection area.\n *\n * If no alignment fits the constrainRegion, the sourceRegion will be resized to match it,\n * using the position with the maximum intersection area.\n *\n * Since we have computed the index of the position with the max intersection area, take that position,\n * and align the sourceRegion accordingly. Then resize the sourceRegion to the intersection, and reposition\n * it again, since resizing it might have destroyed the alignment.\n *\n * Return the position.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n * @param {String[]} positions\n * @param {Object} config\n * @param {Array} config.offset\n * @param {Region} config.constrain\n * @param {Boolean/Object} config.sync\n *\n * @return {String/Undefined} the chosen position for the alignment, or undefined if no position found\n */\nfunction ALIGN_TO_NORMALIZED(sourceRegion, targetRegion, positions, config){\n\n    targetRegion = Region.from(targetRegion)\n\n    config = config  || {}\n\n    var constrainTo = config.constrain,\n        syncOption  = config.sync,\n        offsets     = config.offset || [],\n        syncWidth   = false,\n        syncHeight  = false,\n        sourceClone = sourceRegion.clone()\n\n    /*\n     * Prepare the method arguments: positions, offsets, constrain and sync options\n     */\n    if (!Array.isArray(positions)){\n        positions = positions? [positions]: []\n    }\n\n    if (!Array.isArray(offsets)){\n        offsets = offsets? [offsets]: []\n    }\n\n    if (constrainTo){\n        constrainTo = constrainTo === true?\n                                Region.getDocRegion():\n                                constrainTo.getRegion()\n    }\n\n    if (syncOption){\n\n        if (syncOption.size){\n            syncWidth  = true\n            syncHeight = true\n        } else {\n            syncWidth  = syncOption === true?\n                            true:\n                            syncOption.width || false\n\n            syncHeight = syncOption === true?\n                            true:\n                            syncOption.height || false\n        }\n    }\n\n    if (syncWidth){\n        sourceClone.setWidth(targetRegion.getWidth())\n    }\n    if (syncHeight){\n        sourceClone.setHeight(targetRegion.getHeight())\n\n    }\n\n    var offset,\n        i = 0,\n        len = positions.length,\n        pos,\n        intersection,\n        itArea,\n        maxArea = -1,\n        maxAreaIndex = -1\n\n    for (; i < len; i++){\n        pos     = positions[i]\n        offset  = offsets[i]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            if (!Array.isArray(offset)){\n                offset = offsets[i] = [offset.x || offset.left, offset.y || offset.top]\n            }\n\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //the source region is already aligned in the correct position\n\n        if (constrainTo){\n            //if we have a constrain region, test for the constrain\n            intersection = sourceClone.getIntersection(constrainTo)\n\n            if ( intersection && intersection.equals(sourceClone) ) {\n                //constrain respected, so return (the aligned position)\n\n                sourceRegion.set(sourceClone)\n                return pos\n            } else {\n\n                //the constrain was not respected, so continue trying\n                if (intersection && ((itArea = intersection.getArea()) > maxArea)){\n                    maxArea      = itArea\n                    maxAreaIndex = i\n                }\n            }\n\n        } else {\n            sourceRegion.set(sourceClone)\n            return pos\n        }\n    }\n\n    //no alignment respected the constraints\n    if (~maxAreaIndex){\n        pos     = positions[maxAreaIndex]\n        offset  = offsets[maxAreaIndex]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //we are sure an intersection exists, because of the way the maxAreaIndex was computed\n        intersection = sourceClone.getIntersection(constrainTo)\n\n        sourceClone.setRegion(intersection)\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        sourceRegion.set(sourceClone)\n\n        return pos\n    }\n\n}\n\nmodule.exports = ALIGN_TO_NORMALIZED"
        },
        {
          "id": 104,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getItemStyleProps.js",
          "name": "../react-menus/lib/getItemStyleProps.js",
          "size": 898,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 328,
            "building": 36,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./getItemStyleProps",
              "loc": "11:24-54"
            }
          ],
          "source": "'use strict';\n\nvar assign = require('object-assign')\n\nmodule.exports = function(props, state){\n\n    var itemStyle         = assign({}, props.defaultItemStyle, props.itemStyle)\n    var itemOverStyle     = assign({}, props.defaultItemOverStyle, props.itemOverStyle)\n    var itemActiveStyle   = assign({}, props.defaultItemActiveStyle, props.itemActiveStyle)\n    var itemDisabledStyle = assign({}, props.defaultItemDisabledStyle, props.itemDisabledStyle)\n    var itemExpandedStyle = assign({}, props.defaultItemExpandedStyle, props.itemExpandedStyle)\n    var cellStyle     = assign({}, props.defaultCellStyle, props.cellStyle)\n\n    return {\n        itemStyle        : itemStyle,\n        itemOverStyle    : itemOverStyle,\n        itemActiveStyle  : itemActiveStyle,\n        itemDisabledStyle: itemDisabledStyle,\n        itemExpandedStyle: itemExpandedStyle,\n        cellStyle        : cellStyle\n    }\n}"
        },
        {
          "id": 105,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "name": "../react-menus/lib/renderSubMenu.js",
          "size": 1056,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 329,
            "building": 42,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./renderSubMenu",
              "loc": "12:24-50"
            }
          ],
          "source": "'use strict';\n\nvar Region           = require('region')\nvar assign           = require('object-assign')\nvar cloneWithProps   = require('react-clonewithprops')\nvar getPositionStyle = require('./getSubMenuPositionStyle')\n\nmodule.exports = function(props, state) {\n    var menu = state.menu\n\n    if (menu && this.isMounted()){\n\n        var style = getPositionStyle.call(this, props, state)\n\n        menu = cloneWithProps(menu, assign({\n            ref          : 'subMenu',\n            subMenu      : true,\n            maxHeight    : state.subMenuMaxHeight,\n            onActivate   : this.onSubMenuActivate,\n            onInactivate : this.onSubMenuInactivate,\n            scrollerProps: props.scrollerProps,\n            constrainTo  : props.constrainTo,\n            expander     : props.expander\n        }, props.itemStyleProps))\n\n        return React.createElement(\"div\", {ref: \"subMenuWrap\", style: style, \n                onMouseEnter: this.handleSubMenuMouseEnter, \n                onMouseLeave: this.handleSubMenuMouseLeave\n            }, menu)\n    }\n}"
        },
        {
          "id": 106,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
          "name": "../react-menus/lib/renderChildren.js",
          "size": 2399,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 328,
            "building": 55,
            "dependencies": 108
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./renderChildren",
              "loc": "13:24-51"
            }
          ],
          "source": "'use strict';\n\nvar React = require('react')\nvar MenuItemCell = require('./MenuItemCell')\n\nvar cloneWithProps = require('react-clonewithprops')\nvar assign         = require('object-assign')\n\nfunction emptyFn(){}\n\nmodule.exports = function(props, state) {\n\n    var expandedIndex  = state.itemProps?\n                            state.itemProps.index:\n                            -1\n\n    var children     = props.children\n    var maxCellCount = 1\n    var menuItems    = []\n\n    React.Children.map(children, function(item){\n        var itemProps = item.props\n\n        menuItems.push(item)\n\n        if (!itemProps || !itemProps.isMenuItem){\n            return\n        }\n\n        var count = React.Children.count(itemProps.children)\n\n        maxCellCount = Math.max(maxCellCount, count)\n    })\n\n    var itemStyleProps = props.itemStyleProps\n    var i = -1\n    var result = menuItems.map(function(item, index){\n        var itemProps = item.props\n\n        if (itemProps.isMenuItem){\n            i++\n\n            itemProps.onMenuItemMouseOver = this.onMenuItemMouseOver\n            itemProps.onMenuItemMouseOut  = this.onMenuItemMouseOut\n        }\n\n        var children = React.Children.map(itemProps.children, function(c){ return c })\n        var count    = React.Children.count(children)\n\n        if (count < maxCellCount){\n            children = children? [children]: []\n        }\n\n        while (count < maxCellCount){\n            count++\n            children.push(React.createElement(MenuItemCell, null))\n        }\n\n        var onClick = itemProps.onClick || emptyFn\n\n        return cloneWithProps(item, assign({\n            itemIndex: i,\n            key      : index,\n            index    : index,\n            expanded : expandedIndex == index,\n            children : children,\n            expander : props.expander,\n            onClick  : function(props, index, event){\n                onClick.apply(null, arguments)\n                this.onMenuItemClick(props, index, event)\n            }.bind(this)\n        }, {\n            style        : itemStyleProps.itemStyle,\n            overStyle    : itemStyleProps.itemOverStyle,\n            activeStyle  : itemStyleProps.itemActiveStyle,\n            disabledStyle: itemStyleProps.itemDisabledStyle,\n            expandedStyle: itemStyleProps.itemExpandedStyle,\n            cellStyle    : itemStyleProps.cellStyle\n        }))\n\n    }, this)\n\n    return result\n}"
        },
        {
          "id": 107,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "name": "../react-menus/lib/prepareItem.js",
          "size": 1291,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 329,
            "building": 64,
            "dependencies": 92
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./prepareItem",
              "loc": "14:24-48"
            }
          ],
          "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nvar renderCells     = require('./MenuItem/renderCells')\nvar MenuItem        = require('./MenuItem')\nvar MenuItemFactory = React.createFactory(MenuItem)\nvar MenuSeparator   = require('./MenuSeparator')\n\nmodule.exports = function(props, state, item, index) {\n\n    var expandedIndex = state.itemProps?\n                            state.itemProps.index:\n                            -1\n\n    if (item === '-'){\n        return React.createElement(MenuSeparator, {key: index})\n    }\n\n    var className   = [props.itemClassName, item.cls, item.className]\n                        .filter(function(x)  {return !!x;})\n                        .join(' ')\n\n    var itemProps = assign({\n        className  : className,\n        key        : index,\n        data       : item,\n        columns    : props.columns,\n        expanded   : index === expandedIndex,\n        disabled   : item.disabled,\n        onClick    : item.onClick || item.fn\n    }, props.itemStyleProps)\n\n    itemProps.children = renderCells(itemProps)\n\n    if (item.items){\n        var Menu = require('./Menu')\n        itemProps.children.push(React.createElement(Menu, {items: item.items}))\n    }\n\n    return (props.itemFactory || MenuItemFactory)(itemProps)\n}"
        },
        {
          "id": 108,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/propTypes.js",
          "name": "../react-menus/lib/propTypes.js",
          "size": 512,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 330,
            "building": 89,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./propTypes",
              "loc": "16:16-38"
            }
          ],
          "source": "'use strict';\n\nvar React = require('react')\n\nmodule.exports = {\n    items      : React.PropTypes.array,\n    columns    : React.PropTypes.array,\n    onMount    : React.PropTypes.func,\n\n    defaultRowActiveStyle: React.PropTypes.object,\n    defaultRowOverStyle  : React.PropTypes.object,\n    defaultRowStyle      : React.PropTypes.object,\n\n    rowActiveStyle: React.PropTypes.object,\n    rowOverStyle  : React.PropTypes.object,\n    rowStyle      : React.PropTypes.object,\n\n    cellStyle  : React.PropTypes.object\n}"
        },
        {
          "id": 109,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "name": "../react-menus/lib/ScrollContainer.js",
          "size": 6153,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 329,
            "building": 84,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./ScrollContainer",
              "loc": "17:22-50"
            }
          ],
          "source": "'use strict'\n\nvar assign   = require('object-assign')\nvar Scroller = require('./Scroller')\nvar F        = require('functionally')\nvar buffer   = F.buffer\n\nfunction stop(event){\n    event.preventDefault()\n    event.stopPropagation()\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactMenuScrollContainer',\n\n    getInitialState: function(){\n        return {\n            adjustScroll: true,\n            scrollPos: 0\n        }\n    },\n\n    getDefaultProps: function() {\n        return {\n            scrollStep : 5,\n            scrollSpeed: 50\n        }\n    },\n\n    componentWillUnmount: function(){\n        if (this.props.enableScroll){\n            window.removeEventListener('resize', this.onResizeListener)\n        }\n    },\n\n    componentDidMount: function(){\n        if (this.props.enableScroll){\n            setTimeout(function(){\n                if (!this.isMounted()){\n                    return\n                }\n\n                this.adjustScroll()\n\n                window.addEventListener('resize', this.onResizeListener = buffer(this.onWindowResize, this.props.onWindowResizeBuffer, this))\n            }.bind(this), 0)\n        }\n    },\n\n    componentDidUpdate: function(){\n        this.props.enableScroll && this.adjustScroll()\n    },\n\n    onWindowResize: function(){\n        this.adjustScroll()\n        this.doScroll(0)\n    },\n\n    render: function(){\n\n        var props = this.props\n        var children = props.children\n\n        if (!props.enableScroll){\n            return children\n        }\n\n        var scrollStyle = {\n            position: 'relative'\n        }\n\n        if (this.state.scrollPos){\n            scrollStyle.top = -this.state.scrollPos\n        }\n\n        var containerStyle = {\n            position: 'relative',\n            overflow: 'hidden'\n        }\n\n        if (props.maxHeight){\n            containerStyle.maxHeight = props.maxHeight\n        }\n\n        return React.createElement(\"div\", {\n            onMouseEnter: props.onMouseEnter, \n            onMouseLeave: props.onMouseLeave, \n            className: \"z-menu-scroll-container\", \n            style: containerStyle\n        }, \n            React.createElement(\"div\", {ref: \"tableWrap\", style: scrollStyle}, \n                children\n            ), \n            this.renderScroller(props, -1), \n            this.renderScroller(props, 1)\n        )\n    },\n\n    renderScroller: function(props, direction) {\n\n        var onMouseDown = direction == -1?\n                            this.handleScrollTop:\n                            this.handleScrollBottom\n\n        var onDoubleClick = direction == -1?\n                                this.handleScrollTopMax:\n                                this.handleScrollBottomMax\n\n        var visible = direction == -1?\n                            this.state.hasTopScroll:\n                            this.state.hasBottomScroll\n\n        var scrollerProps = assign({}, props.scrollerProps, {\n            visible    : visible,\n            side       : direction == -1? 'top': 'bottom',\n            onMouseDown: onMouseDown,\n            onDoubleClick: onDoubleClick\n        })\n\n        return React.createElement(Scroller, React.__spread({},  scrollerProps))\n    },\n\n    adjustScroll: function(){\n        if (!this.props.enableScroll){\n            return\n        }\n\n        if (!this.state.adjustScroll){\n            this.state.adjustScroll = true\n            return\n        }\n\n        var availableHeight = this.getAvailableHeight()\n        var tableHeight      = this.getCurrentTableHeight()\n\n        var state = {\n            adjustScroll  : false,\n            hasTopScroll : false,\n            hasBottomScroll: false\n        }\n\n        if (tableHeight > availableHeight){\n            state.maxScrollPos    = tableHeight - availableHeight\n            state.hasTopScroll    = this.state.scrollPos !== 0\n            state.hasBottomScroll = this.state.scrollPos != state.maxScrollPos\n        } else {\n            state.maxScrollPos = 0\n            state.scrollPos    = 0\n        }\n\n        this.setState(state)\n    },\n\n    getAvailableHeight: function() {\n        return this.getAvailableSizeDOM().clientHeight\n    },\n\n    getAvailableSizeDOM: function() {\n        return this.getDOMNode()\n    },\n\n    getCurrentTableHeight: function() {\n        return this.getCurrentSizeDOM().clientHeight\n    },\n\n    getCurrentSizeDOM: function() {\n        return this.refs.tableWrap.getDOMNode()\n    },\n\n    handleScrollTop: function(event){\n        event.preventDefault()\n        this.handleScroll(-1)\n    },\n\n    handleScrollBottom: function(event){\n        event.preventDefault()\n        this.handleScroll(1)\n    },\n\n    handleScrollTopMax: function(event){\n        stop(event)\n        this.handleScrollMax(-1)\n    },\n\n    handleScrollBottomMax: function(event){\n        stop(event)\n        this.handleScrollMax(1)\n    },\n\n    handleScrollMax: function(direction){\n        var maxPos = direction == -1?\n                        0:\n                        this.state.maxScrollPos\n\n        this.setScrollPosition(maxPos)\n    },\n\n    handleScroll: function(direction /*1 to bottom, -1 to up*/){\n        var mouseUpListener = function(){\n            this.stopScroll()\n            window.removeEventListener('mouseup', mouseUpListener)\n        }.bind(this)\n\n        window.addEventListener('mouseup', mouseUpListener)\n\n        this.scrollInterval = setInterval(this.doScroll.bind(this, direction), this.props.scrollSpeed)\n    },\n\n    doScroll: function(direction){\n        this.setState({\n            scrollDirection: direction\n        })\n\n        var newScrollPos = this.state.scrollPos + direction * this.props.scrollStep\n\n        this.setScrollPosition(newScrollPos)\n    },\n\n    setScrollPosition: function(scrollPos){\n        if (scrollPos > this.state.maxScrollPos){\n            scrollPos = this.state.maxScrollPos\n        }\n\n        if (scrollPos < 0){\n            scrollPos = 0\n        }\n\n        this.setState({\n            scrollPos: scrollPos,\n            scrolling : true\n        })\n    },\n\n    stopScroll: function(){\n        clearInterval(this.scrollInterval)\n\n        this.setState({\n            scrolling: false\n        })\n    }\n})"
        },
        {
          "id": 110,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "name": "../react-menus/lib/MenuItem/prepareChildren.js",
          "size": 962,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "profile": {
            "factory": 277,
            "building": 97,
            "dependencies": 62
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "./prepareChildren",
              "loc": "8:22-50"
            }
          ],
          "source": "'use strict';\n\nvar Menu         = require('../Menu')\nvar MenuItemCell = require('../MenuItemCell')\nvar renderCell   = require('./renderCell')\nvar cloneWithProps = require('react-clonewithprops')\n\nmodule.exports = function(props) {\n\n    var children = []\n    var menu\n\n    React.Children.forEach(props.children, function(child){\n        if (child){\n            if (child.props && child.props.isMenu){\n                menu = cloneWithProps(child, {\n                    ref: 'subMenu'\n                })\n                menu.props.subMenu = true\n                return\n            }\n\n            if (typeof child != 'string'){\n                child = cloneWithProps(child, {\n                    style: props.cellStyle\n                })\n            }\n\n            children.push(child)\n        }\n    })\n\n    if (menu){\n        props.menu = menu\n        children.push(React.createElement(MenuItemCell, {expander: props.expander || true}))\n    }\n\n    return children\n}"
        },
        {
          "id": 111,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
          "name": "../react-menus/lib/align/getConstrainRegion.js",
          "size": 575,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 333,
            "building": 100,
            "dependencies": 51
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "./align/getConstrainRegion",
              "loc": "10:25-62"
            },
            {
              "moduleId": 126,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
              "module": "../react-menus/lib/align/index.js",
              "moduleName": "../react-menus/lib/align/index.js",
              "type": "cjs require",
              "userRequest": "./getConstrainRegion",
              "loc": "4:25-56"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\nvar selectParent = require('select-parent')\n\nmodule.exports = function(constrainTo){\n    var constrainRegion\n\n    if (constrainTo === true){\n        constrainRegion = Region.getDocRegion()\n    }\n\n    if (!constrainRegion && typeof constrainTo === 'string'){\n        var parent = selectParent(constrainTo, this.getDOMNode())\n        constrainRegion = Region.from(parent)\n    }\n\n    if (!constrainRegion && typeof constrainTo === 'function'){\n        constrainRegion = Region.from(constrainTo())\n    }\n\n    return constrainRegion\n}"
        },
        {
          "id": 112,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/object-assign/index.js",
          "name": "../react-menus/~/object-assign/index.js",
          "size": 484,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 336,
            "building": 110
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "6:17-41"
            },
            {
              "moduleId": 69,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
              "module": "../react-menus/lib/MenuItemCell.js",
              "moduleName": "../react-menus/lib/MenuItemCell.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:12-36"
            },
            {
              "moduleId": 70,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
              "module": "../react-menus/lib/MenuSeparator.js",
              "moduleName": "../react-menus/lib/MenuSeparator.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 104,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getItemStyleProps.js",
              "module": "../react-menus/lib/getItemStyleProps.js",
              "moduleName": "../react-menus/lib/getItemStyleProps.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:13-37"
            },
            {
              "moduleId": 105,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
              "module": "../react-menus/lib/renderSubMenu.js",
              "moduleName": "../react-menus/lib/renderSubMenu.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:23-47"
            },
            {
              "moduleId": 106,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
              "module": "../react-menus/lib/renderChildren.js",
              "moduleName": "../react-menus/lib/renderChildren.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "7:21-45"
            },
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 109,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
              "module": "../react-menus/lib/ScrollContainer.js",
              "moduleName": "../react-menus/lib/ScrollContainer.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:15-39"
            },
            {
              "moduleId": 117,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
              "module": "../react-menus/lib/getSubMenuPositionStyle.js",
              "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:13-37"
            },
            {
              "moduleId": 119,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
              "module": "../react-menus/lib/Scroller.js",
              "moduleName": "../react-menus/lib/Scroller.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "4:20-44"
            },
            {
              "moduleId": 120,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
              "module": "../react-menus/lib/MenuItem/renderCell.js",
              "moduleName": "../react-menus/lib/MenuItem/renderCell.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "3:13-37"
            }
          ],
          "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
        },
        {
          "id": 113,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
          "name": "../react-menus/~/region/index.js",
          "size": 33,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 349,
            "building": 97
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "7:17-34"
            },
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "5:13-30"
            },
            {
              "moduleId": 105,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
              "module": "../react-menus/lib/renderSubMenu.js",
              "moduleName": "../react-menus/lib/renderSubMenu.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:23-40"
            },
            {
              "moduleId": 111,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
              "module": "../react-menus/lib/align/getConstrainRegion.js",
              "moduleName": "../react-menus/lib/align/getConstrainRegion.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 117,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
              "module": "../react-menus/lib/getSubMenuPositionStyle.js",
              "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 147,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
              "module": "../react-menus/~/region-align/index.js",
              "moduleName": "../react-menus/~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 156,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.static.js",
              "module": "../react-menus/~/region-align/Region.static.js",
              "moduleName": "../react-menus/~/region-align/Region.static.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 157,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.proto.js",
              "module": "../react-menus/~/region-align/Region.proto.js",
              "moduleName": "../react-menus/~/region-align/Region.proto.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            },
            {
              "moduleId": 158,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
              "module": "../react-menus/~/region-align/computeAlignRegion.js",
              "moduleName": "../react-menus/~/region-align/computeAlignRegion.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "5:13-30"
            },
            {
              "moduleId": 171,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/alignToNormalized.js",
              "module": "../react-menus/~/region-align/alignToNormalized.js",
              "moduleName": "../react-menus/~/region-align/alignToNormalized.js",
              "type": "cjs require",
              "userRequest": "region",
              "loc": "3:13-30"
            }
          ],
          "source": "module.exports = require('./src')"
        },
        {
          "id": 114,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/arrow-style/index.js",
          "name": "/usr/lib/~/arrow-style/index.js",
          "size": 1309,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
          "profile": {
            "factory": 333,
            "building": 116
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 69,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
              "module": "../react-menus/lib/MenuItemCell.js",
              "moduleName": "../react-menus/lib/MenuItemCell.js",
              "type": "cjs require",
              "userRequest": "arrow-style",
              "loc": "5:16-38"
            },
            {
              "moduleId": 119,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
              "module": "../react-menus/lib/Scroller.js",
              "moduleName": "../react-menus/lib/Scroller.js",
              "type": "cjs require",
              "userRequest": "arrow-style",
              "loc": "5:20-42"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function arrowStyle(side, config){\n\n    var arrowSize   = config.size   || 8\n    var arrowWidth  = config.width  || arrowSize\n    var arrowHeight = config.height || arrowSize\n    var arrowColor  = config.color  || 'black'\n    var includePosition = config.includePosition\n\n    var style\n\n    if (side == 'up' || side == 'down'){\n\n        style = {\n            borderLeft : arrowWidth + 'px solid transparent',\n            borderRight: arrowWidth + 'px solid transparent'\n        }\n\n        if (includePosition){\n            style.marginTop = -Math.round(arrowHeight/2) + 'px'\n            style.position  = 'relative'\n            style.top       = '50%'\n        }\n\n        style[side === 'up'? 'borderBottom': 'borderTop'] = arrowHeight + 'px solid ' + arrowColor\n    }\n\n    if (side == 'left' || side == 'right'){\n\n        style = {\n            borderTop : arrowHeight + 'px solid transparent',\n            borderBottom: arrowHeight + 'px solid transparent'\n        }\n\n        if (includePosition){\n            style.marginLeft = -Math.round(arrowWidth/2) + 'px'\n            style.position   = 'relative'\n            style.left       = '50%'\n        }\n\n        style[side === 'left'? 'borderRight': 'borderLeft'] = arrowWidth + 'px solid ' + arrowColor\n    }\n\n    return style\n}"
        },
        {
          "id": 115,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/point-in-triangle/index.js",
          "name": "../react-menus/~/point-in-triangle/index.js",
          "size": 803,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "profile": {
            "factory": 350,
            "building": 123
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 68,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
              "module": "../react-menus/lib/Menu.js",
              "moduleName": "../react-menus/lib/Menu.js",
              "type": "cjs require",
              "userRequest": "point-in-triangle",
              "loc": "8:17-45"
            }
          ],
          "source": "//http://www.blackpawn.com/texts/pointinpoly/\nmodule.exports = function pointInTriangle(point, triangle) {\n    //compute vectors & dot products\n    var cx = point[0], cy = point[1],\n        t0 = triangle[0], t1 = triangle[1], t2 = triangle[2],\n        v0x = t2[0]-t0[0], v0y = t2[1]-t0[1],\n        v1x = t1[0]-t0[0], v1y = t1[1]-t0[1],\n        v2x = cx-t0[0], v2y = cy-t0[1],\n        dot00 = v0x*v0x + v0y*v0y,\n        dot01 = v0x*v1x + v0y*v1y,\n        dot02 = v0x*v2x + v0y*v2y,\n        dot11 = v1x*v1x + v1y*v1y,\n        dot12 = v1x*v2x + v1y*v2y\n\n    // Compute barycentric coordinates\n    var b = (dot00 * dot11 - dot01 * dot01),\n        inv = b === 0 ? 0 : (1 / b),\n        u = (dot11*dot02 - dot01*dot12) * inv,\n        v = (dot00*dot12 - dot01*dot02) * inv\n    return u>=0 && v>=0 && (u+v < 1)\n}"
        },
        {
          "id": 116,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
          "name": "../react-menus/~/select-parent/index.js",
          "size": 257,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "profile": {
            "factory": 294,
            "building": 125
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 71,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
              "module": "../react-menus/lib/MenuItem/index.js",
              "moduleName": "../react-menus/lib/MenuItem/index.js",
              "type": "cjs require",
              "userRequest": "select-parent",
              "loc": "6:19-43"
            },
            {
              "moduleId": 111,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
              "module": "../react-menus/lib/align/getConstrainRegion.js",
              "moduleName": "../react-menus/lib/align/getConstrainRegion.js",
              "type": "cjs require",
              "userRequest": "select-parent",
              "loc": "4:19-43"
            }
          ],
          "source": "'use strict';\n\nvar curry   = require('./curry')\nvar matches = require('./matches')\n\nmodule.exports = curry(function(selector, node){\n    while (node = node.parentElement){\n        if (matches.call(node, selector)){\n            return node\n        }\n    }\n})"
        },
        {
          "id": 117,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
          "name": "../react-menus/lib/getSubMenuPositionStyle.js",
          "size": 2912,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "profile": {
            "factory": 108,
            "building": 28,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 105,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
              "module": "../react-menus/lib/renderSubMenu.js",
              "moduleName": "../react-menus/lib/renderSubMenu.js",
              "type": "cjs require",
              "userRequest": "./getSubMenuPositionStyle",
              "loc": "6:23-59"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\nvar assign = require('object-assign')\nvar align  = require('./align')\n\nmodule.exports = function getPositionStyle(props, state){\n    if (!state.menu || !this.isMounted()){\n        this.prevMenuIndex = -1\n        return\n    }\n\n    var offset = state.menuOffset\n    var left   = offset.left + offset.width\n    var top    = offset.top\n\n    var menuIndex = state.itemProps.index\n    var sameMenu = this.prevMenuIndex == menuIndex\n\n    if (this.aligning && !sameMenu){\n        this.aligning = false\n    }\n\n    this.prevMenuIndex = menuIndex\n\n    var style = {\n        position     : 'absolute',\n        visibility   : 'hidden',\n        overflow     : 'hidden',\n        pointerEvents: 'none',\n        left         : left,\n        top          : top,\n        zIndex       : 1\n    }\n\n    if (!this.aligning && !sameMenu){\n        setTimeout(function(){\n\n            if (!this.isMounted()){\n                return\n            }\n\n            var thisRegion = Region.from(this.getDOMNode())\n            var menuItemRegion = Region.from({\n                left  : thisRegion.left,\n                top   : thisRegion.top + offset.top,\n                width : offset.width,\n                height: offset.height\n            })\n\n            var subMenuMounted = this.refs.subMenu && this.refs.subMenu.isMounted()\n            if (!subMenuMounted){\n                return\n            }\n\n            var subMenuRegion = Region.from(this.refs.subMenu.refs.scrollContainer.getCurrentSizeDOM())\n\n            var initialHeight = subMenuRegion.height\n\n            var alignPos = align(props, subMenuRegion, /* alignTo */ menuItemRegion, props.constrainTo)\n\n            var newHeight = subMenuRegion.height\n            var maxHeight\n\n            if (newHeight < initialHeight){\n                maxHeight = newHeight - props.subMenuConstrainMargin\n            }\n\n            if (maxHeight && alignPos == -1 /* upwards*/){\n                subMenuRegion.top = subMenuRegion.bottom - maxHeight\n            }\n\n            var newLeft = subMenuRegion.left - thisRegion.left\n            var newTop  = subMenuRegion.top  - thisRegion.top\n\n            if (Math.abs(newLeft - left) < 5){\n                newLeft = left\n            }\n\n            if (Math.abs(newTop - top) < 5){\n                newTop = top\n            }\n\n            this.subMenuPosition = newLeft < 0? 'left': 'right'\n\n            this.alignOffset = {\n                left: newLeft,\n                top : newTop\n            }\n            this.aligning = true\n\n            this.setState({\n                subMenuMaxHeight: maxHeight\n            })\n\n        }.bind(this), 0)\n    }\n\n    if (sameMenu || (this.aligning && this.alignOffset)){\n        assign(style, this.alignOffset)\n        style.visibility = 'visible'\n        delete style.pointerEvents\n        delete style.overflow\n    }\n\n    this.aligning = false\n\n    return style\n}"
        },
        {
          "id": 118,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCells.js",
          "name": "../react-menus/lib/MenuItem/renderCells.js",
          "size": 152,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "profile": {
            "factory": 86,
            "building": 30,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 107,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
              "module": "../react-menus/lib/prepareItem.js",
              "moduleName": "../react-menus/lib/prepareItem.js",
              "type": "cjs require",
              "userRequest": "./MenuItem/renderCells",
              "loc": "6:22-55"
            }
          ],
          "source": "'use strict';\n\nvar renderCell = require('./renderCell')\n\nmodule.exports = function(props) {\n    return props.columns.map(renderCell.bind(null, props))\n}"
        },
        {
          "id": 119,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
          "name": "../react-menus/lib/Scroller.js",
          "size": 5051,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "profile": {
            "factory": 66,
            "building": 49,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 109,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
              "module": "../react-menus/lib/ScrollContainer.js",
              "moduleName": "../react-menus/lib/ScrollContainer.js",
              "type": "cjs require",
              "userRequest": "./Scroller",
              "loc": "4:15-36"
            }
          ],
          "source": "'use strict';\n\nvar React         = require('react')\nvar assign        = require('object-assign')\nvar getArrowStyle = require('arrow-style')\n\nfunction emptyFn(){}\n\nvar SCROLLER_STYLE = {\n    left      : 0,\n    right     : 0,\n    position  : 'absolute',\n    cursor    : 'pointer',\n    zIndex    : 1\n}\n\nfunction generateArrowStyle(props, state, overrideStyle){\n    var style = assign({}, overrideStyle)\n\n    var arrowConfig = {\n        color: style.color || props.arrowColor\n    }\n\n    var offset = 4\n    var width  = style.width  || props.arrowWidth  || props.arrowSize || (props.style.height - offset)\n    var height = style.height || props.arrowHeight || props.arrowSize || (props.style.height - offset)\n\n    arrowConfig.width  = width\n    arrowConfig.height = height\n\n    assign(style, getArrowStyle(props.side == 'top'? 'up':'down', arrowConfig))\n\n    style.display = 'inline-block'\n    style.position = 'absolute'\n\n    style.left = '50%'\n    style.marginLeft = -width\n\n    style.top = '50%'\n    style.marginTop = -height/2\n\n    if (state.active){\n        style.marginTop += props.side == 'top'? -1: 1\n    }\n\n    return style\n}\n\nvar Scroller = React.createClass({displayName: \"Scroller\",\n\n    display: 'ReactMenuScroller',\n\n    getInitialState: function() {\n        return {}\n    },\n\n    getDefaultProps: function(){\n        return {\n            height: 10,\n            defaultStyle: {\n                background : 'white'\n            },\n            defaultOverStyle: {},\n            overStyle: {},\n\n            defaultTopStyle: {\n                borderBottom: '1px solid gray'\n            },\n            topStyle: {},\n            defaultBottomStyle: {\n                borderTop: '1px solid gray'\n            },\n            bottomStyle: {},\n\n            arrowColor: 'gray',\n\n            arrowStyle: {},\n            defaultArrowStyle: {},\n            defaultArrowOverStyle: {\n                color: 'rgb(74, 74, 74)'\n            },\n            arrowOverStyle: {}\n        }\n    },\n\n    handleMouseEnter: function() {\n        this.setState({\n            mouseOver: true\n        })\n    },\n\n    handleMouseLeave: function() {\n        this.setState({\n            mouseOver: false\n        })\n    },\n\n    handleMouseDown: function(event) {\n        this.setState({\n            active: true\n        })\n\n        ;(this.props.onMouseDown || emptyFn)(event)\n    },\n\n    handleMouseUp: function(event) {\n        this.setState({\n            active: false\n        })\n\n        ;(this.props.onMouseUp || emptyFn)(event)\n    },\n\n    render: function(){\n        var props = assign({}, this.props, {\n            onMouseEnter: this.handleMouseEnter,\n            onMouseLeave: this.handleMouseLeave,\n\n            onMouseDown: this.handleMouseDown,\n            onMouseUp  : this.handleMouseUp\n        })\n\n        var state = this.state\n        var side  = props.side\n\n        props.className = this.prepareClassName(props, state)\n\n        props.style = this.prepareStyle(props, state)\n\n        var arrowStyle = this.prepareArrowStyle(props, state)\n\n        return props.factory?\n                    props.factory(props, side):\n                    React.createElement(\"div\", React.__spread({},  props), \n                        React.createElement(\"div\", {style: arrowStyle})\n                    )\n    },\n\n    prepareStyle: function(props, state) {\n        var defaultOverStyle\n        var overStyle\n\n        if (state.mouseOver){\n            overStyle        = props.overStyle\n            defaultOverStyle = props.defaultOverStyle\n        }\n\n        var defaultSideStyle = props.side == 'top'?\n                                props.defaultTopStyle:\n                                props.defaultBottomStyle\n        var sideStyle = props.side == 'top'?\n                            props.topStyle:\n                            props.bottomStyle\n\n        var style = assign({}, SCROLLER_STYLE,\n                            props.defaultStyle, defaultSideStyle, defaultOverStyle,\n                            props.style, sideStyle, overStyle)\n\n        style.height = style.height || props.height\n        style[props.side] = 0\n        if (!props.visible){\n            style.display = 'none'\n        }\n\n        return style\n    },\n\n    prepareClassName: function(props, state) {\n        //className\n        var className = props.className || ''\n        className += ' z-menu-scroller ' + props.side\n\n        if (props.active && props.visible){\n            className += ' active'\n        }\n\n        return className\n    },\n\n    prepareArrowStyle: function(props, state) {\n\n        var defaultArrowOverStyle\n        var arrowOverStyle\n\n        if (state.mouseOver){\n            defaultArrowOverStyle = props.defaultArrowOverStyle\n            arrowOverStyle        = props.arrowOverStyle\n        }\n\n        var arrowStyle = assign({}, props.defaultArrowStyle, defaultArrowOverStyle, props.arrowStyle, arrowOverStyle)\n\n        return generateArrowStyle(props, state, arrowStyle)\n    },\n\n    handleClick: function(event){\n        event.stopPropagation\n    }\n})\n\nmodule.exports = Scroller"
        },
        {
          "id": 120,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
          "name": "../react-menus/lib/MenuItem/renderCell.js",
          "size": 294,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "profile": {
            "factory": 54,
            "building": 54,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 110,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
              "module": "../react-menus/lib/MenuItem/prepareChildren.js",
              "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
              "type": "cjs require",
              "userRequest": "./renderCell",
              "loc": "5:19-42"
            },
            {
              "moduleId": 118,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCells.js",
              "module": "../react-menus/lib/MenuItem/renderCells.js",
              "moduleName": "../react-menus/lib/MenuItem/renderCells.js",
              "type": "cjs require",
              "userRequest": "./renderCell",
              "loc": "3:17-40"
            }
          ],
          "source": "'use strict';\n\nvar assign = require('object-assign')\nvar MenuItemCell = require('../MenuItemCell')\n\nmodule.exports = function(props, column) {\n    var style = assign({}, props.defaultCellStyle, props.cellStyle)\n\n    return React.createElement(MenuItemCell, {style: style}, props.data[column])\n}"
        },
        {
          "id": 121,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/curry.js",
          "name": "../react-menus/~/select-parent/curry.js",
          "size": 582,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
          "profile": {
            "factory": 15,
            "building": 53
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 116,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
              "module": "../react-menus/~/select-parent/index.js",
              "moduleName": "../react-menus/~/select-parent/index.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "3:14-32"
            }
          ],
          "source": "'use strict';\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
        },
        {
          "id": 122,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/matches.js",
          "name": "../react-menus/~/select-parent/matches.js",
          "size": 232,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
          "profile": {
            "factory": 15,
            "building": 55
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 116,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
              "module": "../react-menus/~/select-parent/index.js",
              "moduleName": "../react-menus/~/select-parent/index.js",
              "type": "cjs require",
              "userRequest": "./matches",
              "loc": "4:14-34"
            }
          ],
          "source": "'use strict';\n\nvar proto = Element.prototype\n\nvar nativeMatches = proto.matches ||\n  proto.mozMatchesSelector ||\n  proto.msMatchesSelector ||\n  proto.oMatchesSelector ||\n  proto.webkitMatchesSelector\n\nmodule.exports = nativeMatches\n"
        },
        {
          "id": 123,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/react-clonewithprops/index.js",
          "name": "../react-menus/~/react-clonewithprops/index.js",
          "size": 1960,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "profile": {
            "factory": 119,
            "building": 66,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 105,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
              "module": "../react-menus/lib/renderSubMenu.js",
              "moduleName": "../react-menus/lib/renderSubMenu.js",
              "type": "cjs require",
              "userRequest": "react-clonewithprops",
              "loc": "5:23-54"
            },
            {
              "moduleId": 106,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
              "module": "../react-menus/lib/renderChildren.js",
              "moduleName": "../react-menus/lib/renderChildren.js",
              "type": "cjs require",
              "userRequest": "react-clonewithprops",
              "loc": "6:21-52"
            },
            {
              "moduleId": 110,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
              "module": "../react-menus/lib/MenuItem/prepareChildren.js",
              "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
              "type": "cjs require",
              "userRequest": "react-clonewithprops",
              "loc": "6:21-52"
            }
          ],
          "source": "'use strict';\r\nvar React    = require('react')\r\n  , hasOwn   = Object.prototype.hasOwnProperty\r\n  , version  = React.version.split('.').map(parseFloat)\r\n  , RESERVED = {\r\n      className:  resolve(joinClasses),\r\n      children:   function(){},\r\n      key:        function(){},\r\n      ref:        function(){},\r\n      style:      resolve(extend)\r\n    };\r\n\r\nmodule.exports = function cloneWithProps(child, props) {\r\n  var newProps = mergeProps(props, child.props);\r\n\r\n  if (!hasOwn.call(newProps, 'children') && hasOwn.call(child.props, 'children'))\r\n    newProps.children = child.props.children;\r\n\r\n  // < 0.11\r\n  if (version[0] === 0 && version[1] < 11)\r\n    return child.constructor.ConvenienceConstructor(newProps);\r\n  \r\n  // 0.11\r\n  if (version[0] === 0 && version[1] === 11)\r\n    return child.constructor(newProps);\r\n\r\n  // 0.12\r\n  else if (version[0] === 0 && version[1] === 12){\r\n    MockLegacyFactory.isReactLegacyFactory = true\r\n    MockLegacyFactory.type = child.type\r\n    return React.createElement(MockLegacyFactory, newProps);\r\n  }\r\n\r\n  // 0.13+\r\n  return React.createElement(child.type, newProps);\r\n\r\n  function MockLegacyFactory(){}\r\n}\r\n\r\nfunction mergeProps(currentProps, childProps) {\r\n  var newProps = extend(currentProps), key\r\n\r\n  for (key in childProps) {\r\n    if (hasOwn.call(RESERVED, key) )\r\n      RESERVED[key](newProps, childProps[key], key)\r\n\r\n    else if ( !hasOwn.call(newProps, key) )\r\n      newProps[key] = childProps[key];\r\n  }\r\n  return newProps\r\n}\r\n\r\nfunction resolve(fn){\r\n  return function(src, value, key){\r\n    if( !hasOwn.call(src, key)) src[key] = value\r\n    else src[key] = fn(src[key], value)\r\n  }\r\n}\r\n\r\nfunction joinClasses(a, b){\r\n  if ( !a ) return b || ''\r\n  return a + (b ? ' ' + b : '')\r\n}\r\n\r\nfunction extend() {\r\n  var target = {};\r\n  for (var i = 0; i < arguments.length; i++) \r\n    for (var key in arguments[i]) if (hasOwn.call(arguments[i], key)) \r\n      target[key] = arguments[i][key]   \r\n  return target\r\n}"
        },
        {
          "id": 124,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "name": "../react-menus/~/functionally/index.js",
          "size": 20486,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "profile": {
            "factory": 76,
            "building": 125
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 109,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
              "module": "../react-menus/lib/ScrollContainer.js",
              "moduleName": "../react-menus/lib/ScrollContainer.js",
              "type": "cjs require",
              "userRequest": "functionally",
              "loc": "5:15-38"
            }
          ],
          "source": "    var setImmediate = function(fn){\r\n        setTimeout(fn, 0)\r\n    }\r\n    var clearImmediate = clearTimeout\r\n    /**\r\n     * Utility methods for working with functions.\r\n     * These methods augment the Function prototype.\r\n     *\r\n     * Using {@link #before}\r\n     *\r\n     *      function log(m){\r\n     *          console.log(m)\r\n     *      }\r\n     *\r\n     *      var doLog = function (m){\r\n     *          console.log('LOG ')\r\n     *      }.before(log)\r\n     *\r\n     *      doLog('test')\r\n     *      //will log\r\n     *      //\"LOG \"\r\n     *      //and then\r\n     *      //\"test\"\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #bindArgs}:\r\n     *\r\n     *      //returns the sum of all arguments\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1 = add.bindArgs(1)\r\n     *\r\n     *      add1(2, 3) == 6\r\n     *\r\n     * Using {@link #lockArgs}:\r\n     *\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1_2   = add.lockArgs(1,2)\r\n     *      var add1_2_3 = add.lockArgs(1,2,3)\r\n     *\r\n     *      add1_2(3,4)  == 3 //args are locked to only be 1 and 2\r\n     *      add1_2_3(6)  == 6 //args are locked to only be 1, 2 and 3\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #compose}:\r\n     *\r\n     *      function multiply(a,b){\r\n     *          return a* b\r\n     *      }\r\n     *\r\n     *      var multiply2 = multiply.curry()(2)\r\n     *\r\n     *      Function.compose(multiply2( add(5,6) )) == multiply2( add(5,6) )\r\n     *\r\n     *\r\n     * @class Function\r\n     */\r\n\r\n    var SLICE = Array.prototype.slice\r\n\r\n    var curry = require('./src/curry'),\r\n\r\n        findFn = function(fn, target, onFound){\r\n            // if (typeof target.find == 'function'){\r\n            //     return target.find(fn)\r\n            // }\r\n\r\n            onFound = typeof onFound == 'function'?\r\n                        onFound:\r\n                        function(found, key, target){\r\n                            return found\r\n                        }\r\n\r\n            if (Array.isArray(target)){\r\n                var i   = 0\r\n                var len = target.length\r\n                var it\r\n\r\n                for(; i < len; i++){\r\n                    it = target[i]\r\n                    if (fn(it, i, target)){\r\n                        return onFound(it, i, target)\r\n                    }\r\n                }\r\n\r\n                return\r\n            }\r\n\r\n            if (typeof target == 'object'){\r\n                var keys = Object.keys(target)\r\n                var i = 0\r\n                var len = keys.length\r\n                var k\r\n                var it\r\n\r\n                for( ; i < len; i++){\r\n                    k  = keys[i]\r\n                    it = target[k]\r\n\r\n                    if (fn(it, k, target)){\r\n                        return onFound(it, k, target)\r\n                    }\r\n                }\r\n            }\r\n        },\r\n\r\n        find = curry(findFn, 2),\r\n\r\n        findIndex = curry(function(fn, target){\r\n            return findFn(fn, target, function(it, i){\r\n                return i\r\n            })\r\n        }),\r\n\r\n        bindFunctionsOf = function(obj) {\r\n            Object.keys(obj).forEach(function(k){\r\n                if (typeof obj[k] == 'function'){\r\n                    obj[k] = obj[k].bind(obj)\r\n                }\r\n            })\r\n\r\n            return obj\r\n        },\r\n\r\n        /*\r\n         * @param {Function...} an enumeration of functions, each consuming the result of the following function.\r\n         *\r\n         * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\r\n         *\r\n         * @return the result of the first function in the enumeration\r\n         */\r\n        compose = require('./src/compose'),\r\n\r\n        chain = require('./src/chain'),\r\n\r\n        once = require('./src/once'),\r\n\r\n        bindArgsArray = require('./src/bindArgsArray'),\r\n\r\n        bindArgs = require('./src/bindArgs'),\r\n\r\n        lockArgsArray = require('./src/lockArgsArray'),\r\n\r\n        lockArgs = require('./src/lockArgs'),\r\n\r\n        skipArgs = function(fn, count){\r\n            return function(){\r\n                var args = SLICE.call(arguments, count || 0)\r\n\r\n                return fn.apply(this, args)\r\n            }\r\n        },\r\n\r\n        intercept = function(interceptedFn, interceptingFn, withStopArg){\r\n\r\n            return function(){\r\n                var args    = [].from(arguments),\r\n                    stopArg = { stop: false }\r\n\r\n                if (withStopArg){\r\n                    args.push(stopArg)\r\n                }\r\n\r\n                var result = interceptingFn.apply(this, args)\r\n\r\n                if (withStopArg){\r\n                    if (stopArg.stop === true){\r\n                        return result\r\n                    }\r\n\r\n                } else {\r\n                    if (result === false){\r\n                        return result\r\n                    }\r\n                }\r\n\r\n                //the interception was not stopped\r\n                return interceptedFn.apply(this, arguments)\r\n            }\r\n\r\n        },\r\n\r\n        delay = function(fn, delay, scope){\r\n\r\n            var delayIsNumber = delay * 1 == delay\r\n\r\n            if (arguments.length == 2 && !delayIsNumber){\r\n                scope = delay\r\n                delay = 0\r\n            } else {\r\n                if (!delayIsNumber){\r\n                    delay = 0\r\n                }\r\n            }\r\n\r\n            return function(){\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                if (delay || !setImmediate){\r\n                    setTimeout(function(){\r\n                        fn.apply(self, args)\r\n                    }, delay)\r\n\r\n                } else {\r\n                    setImmediate(function(){\r\n                        fn.apply(self, args)\r\n                    })\r\n                }\r\n            }\r\n        },\r\n\r\n        defer = function(fn, scope){\r\n            return delay(fn, 0, scope)\r\n        },\r\n\r\n        buffer = function(fn, delay, scope){\r\n\r\n            var timeoutId = -1\r\n\r\n            return function(){\r\n\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                var withTimeout = delay || !setImmediate,\r\n                    clearFn = withTimeout?\r\n                                clearTimeout:\r\n                                clearImmediate,\r\n                    setFn   = withTimeout?\r\n                                setTimeout:\r\n                                setImmediate\r\n\r\n                if (timeoutId !== -1){\r\n                    clearFn(timeoutId)\r\n                }\r\n\r\n                timeoutId = setFn(function(){\r\n                    fn.apply(self, args)\r\n                    self = null\r\n                }, delay)\r\n\r\n            }\r\n\r\n        },\r\n\r\n        throttle = function(fn, delay, scope) {\r\n            var timeoutId = -1,\r\n                self,\r\n                args\r\n\r\n            return function () {\r\n\r\n                self = scope || this\r\n                args = arguments\r\n\r\n                if (timeoutId !== -1) {\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function () {\r\n                        fn.apply(self, args)\r\n\r\n                        self = null\r\n                        timeoutId = -1\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n        },\r\n\r\n        spread = function(fn, delay, scope){\r\n\r\n            var timeoutId       = -1\r\n            var callCount       = 0\r\n            var executeCount    = 0\r\n            var nextArgs        = {}\r\n            var increaseCounter = true\r\n            var resultingFnUnbound\r\n            var resultingFn\r\n\r\n            resultingFn = resultingFnUnbound = function(){\r\n\r\n                var args = arguments,\r\n                    self = scope || this\r\n\r\n                if (increaseCounter){\r\n                    nextArgs[callCount++] = {args: args, scope: self}\r\n                }\r\n\r\n                if (timeoutId !== -1){\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function(){\r\n                        fn.apply(self, args)\r\n\r\n                        timeoutId = -1\r\n                        executeCount++\r\n\r\n                        if (callCount !== executeCount){\r\n                            resultingFn = bindArgsArray(resultingFnUnbound, nextArgs[executeCount].args).bind(nextArgs[executeCount].scope)\r\n                            delete nextArgs[executeCount]\r\n\r\n                            increaseCounter = false\r\n                            resultingFn.apply(self)\r\n                            increaseCounter = true\r\n                        } else {\r\n                            nextArgs = {}\r\n                        }\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n            return resultingFn\r\n        },\r\n\r\n        /*\r\n         * @param {Array} args the array for which to create a cache key\r\n         * @param {Number} [cacheParamNumber] the number of args to use for the cache key. Use this to limit the args that area actually used for the cache key\r\n         */\r\n        getCacheKey = function(args, cacheParamNumber){\r\n            if (cacheParamNumber == null){\r\n                cacheParamNumber = -1\r\n            }\r\n\r\n            var i        = 0,\r\n                len      = Math.min(args.length, cacheParamNumber),\r\n                cacheKey = [],\r\n                it\r\n\r\n            for ( ; i < len; i++){\r\n                it = args[i]\r\n\r\n                if (root.check.isPlainObject(it) || Array.isArray(it)){\r\n                    cacheKey.push(JSON.stringify(it))\r\n                } else {\r\n                    cacheKey.push(String(it))\r\n                }\r\n            }\r\n\r\n            return cacheKey.join(', ')\r\n        },\r\n\r\n        /*\r\n         * @param {Function} fn - the function to cache results for\r\n         * @param {Number} skipCacheParamNumber - the index of the boolean parameter that makes this function skip the caching and\r\n         * actually return computed results.\r\n         * @param {Function|String} cacheBucketMethod - a function or the name of a method on this object which makes caching distributed across multiple buckets.\r\n         * If given, cached results will be searched into the cache corresponding to this bucket. If no result found, return computed result.\r\n         *\r\n         * For example this param is very useful when a function from a prototype is cached,\r\n         * but we want to return the same cached results only for one object that inherits that proto, not for all objects. Thus, for example for Wes.Element,\r\n         * we use the 'getId' cacheBucketMethod to indicate cached results for one object only.\r\n         * @param {Function} [cacheKeyBuilder] A function to be used to compose the cache key\r\n         *\r\n         * @return {Function} a new function, which returns results from cache, if they are available, otherwise uses the given fn to compute the results.\r\n         * This returned function has a 'clearCache' function attached, which clears the caching. If a parameter ( a bucket id) is  provided,\r\n         * only clears the cache in the specified cache bucket.\r\n         */\r\n        cache = function(fn, config){\r\n            config = config || {}\r\n\r\n            var bucketCache = {},\r\n                cache       = {},\r\n                skipCacheParamNumber = config.skipCacheIndex,\r\n                cacheBucketMethod    = config.cacheBucket,\r\n                cacheKeyBuilder      = config.cacheKey,\r\n                cacheArgsLength      = skipCacheParamNumber == null?\r\n                                            fn.length:\r\n                                            skipCacheParamNumber,\r\n                cachingFn\r\n\r\n            cachingFn = function(){\r\n                var result,\r\n                    skipCache = skipCacheParamNumber != null?\r\n                                                arguments[skipCacheParamNumber] === true:\r\n                                                false,\r\n                    args = skipCache?\r\n                                    SLICE.call(arguments, 0, cacheArgsLength):\r\n                                    SLICE.call(arguments),\r\n\r\n                    cacheBucketId = cacheBucketMethod != null?\r\n                                        typeof cacheBucketMethod == 'function'?\r\n                                            cacheBucketMethod():\r\n                                            typeof this[cacheBucketMethod] == 'function'?\r\n                                                this[cacheBucketMethod]():\r\n                                                null\r\n                                        :\r\n                                        null,\r\n\r\n\r\n                    cacheObject = cacheBucketId?\r\n                                        bucketCache[cacheBucketId]:\r\n                                        cache,\r\n\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(args, cacheArgsLength)\r\n\r\n                if (cacheBucketId && !cacheObject){\r\n                    cacheObject = bucketCache[cacheBucketId] = {}\r\n                }\r\n\r\n                if (skipCache || cacheObject[cacheKey] == null){\r\n                    cacheObject[cacheKey] = result = fn.apply(this, args)\r\n                } else {\r\n                    result = cacheObject[cacheKey]\r\n                }\r\n\r\n                return result\r\n            }\r\n\r\n            /*\r\n             * @param {String|Object|Number} [bucketId] the bucket for which to clear the cache. If none given, clears all the cache for this function.\r\n             */\r\n            cachingFn.clearCache = function(bucketId){\r\n                if (bucketId){\r\n                    delete bucketCache[String(bucketId)]\r\n                } else {\r\n                    cache = {}\r\n                    bucketCache = {}\r\n                }\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getCache = function(cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.getBucketCache(null, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket from which to retrieve the cached value\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getBucketCache = function(bucketId, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId);\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {}\r\n                }\r\n\r\n                return cacheObject[cacheKey]\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setCache = function(value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.setBucketCache(null, value, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket for which to set the cache value\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setBucketCache = function(bucketId, value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId)\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {};\r\n                }\r\n\r\n                return cacheObject[cacheKey] = value\r\n            }\r\n\r\n            return cachingFn\r\n        }\r\n\r\nmodule.exports = {\r\n\r\n    map: require('./src/map'),\r\n\r\n    dot: require('./src/dot'),\r\n\r\n    maxArgs: require('./src/maxArgs'),\r\n\r\n    /**\r\n     * @method compose\r\n     *\r\n     * Example:\r\n     *\r\n     *      zippy.Function.compose(c, b, a)\r\n     *\r\n     * See {@link Function#compose}\r\n     */\r\n    compose: compose,\r\n\r\n    /**\r\n     * See {@link Function#self}\r\n     */\r\n    self: function(fn){\r\n        return fn\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#buffer}\r\n     */\r\n    buffer: buffer,\r\n\r\n    /**\r\n     * See {@link Function#delay}\r\n     */\r\n    delay: delay,\r\n\r\n    /**\r\n     * See {@link Function#defer}\r\n     * @param {Function} fn\r\n     * @param {Object} scope\r\n     */\r\n    defer:defer,\r\n\r\n    /**\r\n     * See {@link Function#skipArgs}\r\n     * @param {Function} fn\r\n     * @param {Number} [count=0] how many args to skip when calling the resulting function\r\n     * @return {Function} The function that will call the original fn without the first count args.\r\n     */\r\n    skipArgs: skipArgs,\r\n\r\n    /**\r\n     * See {@link Function#intercept}\r\n     */\r\n    intercept: function(fn, interceptedFn, withStopArgs){\r\n        return intercept(interceptedFn, fn, withStopArgs)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#throttle}\r\n     */\r\n    throttle: throttle,\r\n\r\n    /**\r\n     * See {@link Function#spread}\r\n     */\r\n    spread: spread,\r\n\r\n    /**\r\n     * See {@link Function#chain}\r\n     */\r\n    chain: function(fn, where, mainFn){\r\n        return chain(where, mainFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#before}\r\n     */\r\n    before: function(fn, otherFn){\r\n        return chain('before', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#after}\r\n     */\r\n    after: function(fn, otherFn){\r\n        return chain('after', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#curry}\r\n     */\r\n    curry: curry,\r\n\r\n    /**\r\n     * See {@link Function#once}\r\n     */\r\n    once: once,\r\n\r\n    /**\r\n     * See {@link Function#bindArgs}\r\n     */\r\n    bindArgs: bindArgs,\r\n\r\n    /**\r\n     * See {@link Function#bindArgsArray}\r\n     */\r\n    bindArgsArray: bindArgsArray,\r\n\r\n    /**\r\n     * See {@link Function#lockArgs}\r\n     */\r\n    lockArgs: lockArgs,\r\n\r\n    /**\r\n     * See {@link Function#lockArgsArray}\r\n     */\r\n    lockArgsArray: lockArgsArray,\r\n\r\n    bindFunctionsOf: bindFunctionsOf,\r\n\r\n    find: find,\r\n\r\n    findIndex: findIndex,\r\n\r\n    newify: require('./src/newify')\r\n}"
        },
        {
          "id": 125,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "name": "../react-menus/~/region/src/index.js",
          "size": 27185,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
          "profile": {
            "factory": 49,
            "building": 192
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 113,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
              "module": "../react-menus/~/region/index.js",
              "moduleName": "../react-menus/~/region/index.js",
              "type": "cjs require",
              "userRequest": "./src",
              "loc": "1:17-33"
            }
          ],
          "source": "'use strict';\n\nvar hasOwn    = require('hasown')\nvar newify    = require('newify')\nvar copyUtils = require('copy-utils')\nvar copyList  = copyUtils.copyList\nvar copy      = copyUtils.copy\nvar isObject  = require('i-s').object\nvar EventEmitter = require('events').EventEmitter\nvar inherits = require('./inherits')\nvar VALIDATE = require('./validate')\n\n/**\n * @class Region\n *\n * The Region is an abstraction that allows the developer to refer to rectangles on the screen,\n * and move them around, make diffs and unions, detect intersections, compute areas, etc.\n *\n * ## Creating a region\n *      var region = require('region')({\n *          top  : 10,\n *          left : 10,\n *          bottom: 100,\n *          right : 100\n *      })\n *      //this region is a square, 90x90, starting from (10,10) to (100,100)\n *\n *      var second = require('region')({ top: 10, left: 100, right: 200, bottom: 60})\n *      var union  = region.getUnion(second)\n *\n *      //the \"union\" region is a union between \"region\" and \"second\"\n */\n\nvar POINT_POSITIONS = {\n        cy: 'YCenter',\n        cx: 'XCenter',\n        t : 'Top',\n        tc: 'TopCenter',\n        tl: 'TopLeft',\n        tr: 'TopRight',\n        b : 'Bottom',\n        bc: 'BottomCenter',\n        bl: 'BottomLeft',\n        br: 'BottomRight',\n        l : 'Left',\n        lc: 'LeftCenter',\n        r : 'Right',\n        rc: 'RightCenter',\n        c : 'Center'\n    }\n\n/**\n * @constructor\n *\n * Construct a new Region.\n *\n * Example:\n *\n *      var r = new Region({ top: 10, left: 20, bottom: 100, right: 200 })\n *\n *      //or, the same, but with numbers (can be used with new or without)\n *\n *      r = Region(10, 200, 100, 20)\n *\n *      //or, with width and height\n *\n *      r = Region({ top: 10, left: 20, width: 180, height: 90})\n *\n * @param {Number|Object} top The top pixel position, or an object with top, left, bottom, right properties. If an object is passed,\n * instead of having bottom and right, it can have width and height.\n *\n * @param {Number} right The right pixel position\n * @param {Number} bottom The bottom pixel position\n * @param {Number} left The left pixel position\n *\n * @return {Region} this\n */\nvar REGION = function(top, right, bottom, left){\n\n    if (!(this instanceof REGION)){\n        return newify(REGION, arguments)\n    }\n\n    EventEmitter.call(this)\n\n    if (isObject(top)){\n        copyList(top, this, ['top','right','bottom','left'])\n\n        if (top.bottom == null && top.height != null){\n            this.bottom = this.top + top.height\n        }\n        if (top.right == null && top.width != null){\n            this.right = this.left + top.width\n        }\n\n        if (top.emitChangeEvents){\n            this.emitChangeEvents = top.emitChangeEvents\n        }\n    } else {\n        this.top    = top\n        this.right  = right\n        this.bottom = bottom\n        this.left   = left\n    }\n\n    this[0] = this.left\n    this[1] = this.top\n\n    VALIDATE(this)\n}\n\ninherits(REGION, EventEmitter)\n\ncopy({\n\n    /**\n     * @cfg {Boolean} emitChangeEvents If this is set to true, the region\n     * will emit 'changesize' and 'changeposition' whenever the size or the position changs\n     */\n    emitChangeEvents: false,\n\n    /**\n     * Returns this region, or a clone of this region\n     * @param  {Boolean} [clone] If true, this method will return a clone of this region\n     * @return {Region}       This region, or a clone of this\n     */\n    getRegion: function(clone){\n        return clone?\n                    this.clone():\n                    this\n    },\n\n    /**\n     * Sets the properties of this region to those of the given region\n     * @param {Region/Object} reg The region or object to use for setting properties of this region\n     * @return {Region} this\n     */\n    setRegion: function(reg){\n\n        if (reg instanceof REGION){\n            this.set(reg.get())\n        } else {\n            this.set(reg)\n        }\n\n        return this\n    },\n\n    /**\n     * Returns true if this region is valid, false otherwise\n     *\n     * @param  {Region} region The region to check\n     * @return {Boolean}        True, if the region is valid, false otherwise.\n     * A region is valid if\n     *  * left <= right  &&\n     *  * top  <= bottom\n     */\n    validate: function(){\n        return REGION.validate(this)\n    },\n\n    _before: function(){\n        if (this.emitChangeEvents){\n            return copyList(this, {}, ['left','top','bottom','right'])\n        }\n    },\n\n    _after: function(before){\n        if (this.emitChangeEvents){\n\n            if(this.top != before.top || this.left != before.left) {\n                this.emitPositionChange()\n            }\n\n            if(this.right != before.right || this.bottom != before.bottom) {\n                this.emitSizeChange()\n            }\n        }\n    },\n\n    notifyPositionChange: function(){\n        this.emit('changeposition', this)\n    },\n\n    emitPositionChange: function(){\n        this.notifyPositionChange()\n    },\n\n    notifySizeChange: function(){\n        this.emit('changesize', this)\n    },\n\n    emitSizeChange: function(){\n        this.notifySizeChange()\n    },\n\n    /**\n     * Add the given amounts to each specified side. Example\n     *\n     *      region.add({\n     *          top: 50,    //add 50 px to the top side\n     *          bottom: -100    //substract 100 px from the bottom side\n     *      })\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    add: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            this[direction] += directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * The same as {@link #add}, but substracts the given values\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    substract: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if (hasOwn(directions, direction) ) {\n            this[direction] -= directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the size of the region.\n     * @return {Object} An object with {width, height}, corresponding to the width and height of the region\n     */\n    getSize: function(){\n        return {\n            width  : this.width,\n            height : this.height\n        }\n    },\n\n    /**\n     * Move the region to the given position and keeps the region width and height.\n     *\n     * @param {Object} position An object with {top, left} properties. The values in {top,left} are used to move the region by the given amounts.\n     * @param {Number} [position.left]\n     * @param {Number} [position.top]\n     *\n     * @return {Region} this\n     */\n    setPosition: function(position){\n        var width  = this.width\n        var height = this.height\n\n        if (position.left != undefined){\n            position.right  = position.left + width\n        }\n\n        if (position.top != undefined){\n            position.bottom = position.top  + height\n        }\n\n        return this.set(position)\n    },\n\n    /**\n     * Sets both the height and the width of this region to the given size.\n     *\n     * @param {Number} size The new size for the region\n     * @return {Region} this\n     */\n    setSize: function(size){\n        if (size.height != undefined && size.width != undefined){\n            return this.set({\n                right  : this.left + size.width,\n                bottom : this.top  + size.height\n            })\n        }\n\n        if (size.width != undefined){\n            this.setWidth(size.width)\n        }\n\n        if (size.height != undefined){\n            this.setHeight(size.height)\n        }\n\n        return this\n    },\n\n\n\n    /**\n     * @chainable\n     *\n     * Sets the width of this region\n     * @param {Number} width The new width for this region\n     * @return {Region} this\n     */\n    setWidth: function(width){\n        return this.set({\n            right: this.left + width\n        })\n    },\n\n    /**\n     * @chainable\n     *\n     * Sets the height of this region\n     * @param {Number} height The new height for this region\n     * @return {Region} this\n     */\n    setHeight: function(height){\n        return this.set({\n            bottom: this.top + height\n        })\n    },\n\n    /**\n     * Sets the given properties on this region\n     *\n     * @param {Object} directions an object containing top, left, and EITHER bottom, right OR width, height\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @param {Number} [directions.width]\n     * @param {Number} [directions.height]\n     *\n     *\n     * @return {Region} this\n     */\n    set: function(directions){\n        var before = this._before()\n\n        copyList(directions, this, ['left','top','bottom','right'])\n\n        if (directions.bottom == null && directions.height != null){\n            this.bottom = this.top + directions.height\n        }\n        if (directions.right == null && directions.width != null){\n            this.right = this.left + directions.width\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the given property from this region. If no property is given, return an object\n     * with {left, top, right, bottom}\n     *\n     * @param {String} [dir] the property to retrieve from this region\n     * @return {Number/Object}\n     */\n    get: function(dir){\n        return dir? this[dir]:\n                    copyList(this, {}, ['left','right','top','bottom'])\n    },\n\n    /**\n     * Shifts this region to either top, or left or both.\n     * Shift is similar to {@link #add} by the fact that it adds the given dimensions to top/left sides, but also adds the given dimensions\n     * to bottom and right\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    shift: function(directions){\n\n        var before = this._before()\n\n        if (directions.top){\n            this.top    += directions.top\n            this.bottom += directions.top\n        }\n\n        if (directions.left){\n            this.left  += directions.left\n            this.right += directions.left\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Same as {@link #shift}, but substracts the given values\n     * @chainable\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    unshift: function(directions){\n\n        if (directions.top){\n            directions.top *= -1\n        }\n\n        if (directions.left){\n            directions.left *= -1\n        }\n\n        return this.shift(directions)\n    },\n\n    /**\n     * Compare this region and the given region. Return true if they have all the same size and position\n     * @param  {Region} region The region to compare with\n     * @return {Boolean}       True if this and region have same size and position\n     */\n    equals: function(region){\n        return this.equalsPosition(region) && this.equalsSize(region)\n    },\n\n    /**\n     * Returns true if this region has the same bottom,right properties as the given region\n     * @param  {Region/Object} size The region to compare against\n     * @return {Boolean}       true if this region is the same size as the given size\n     */\n    equalsSize: function(size){\n        var isInstance = size instanceof REGION\n\n        var s = {\n            width: size.width == null && isInstance?\n                    size.getWidth():\n                    size.width,\n\n            height: size.height == null && isInstance?\n                    size.getHeight():\n                    size.height\n        }\n        return this.getWidth() == s.width && this.getHeight() == s.height\n    },\n\n    /**\n     * Returns true if this region has the same top,left properties as the given region\n     * @param  {Region} region The region to compare against\n     * @return {Boolean}       true if this.top == region.top and this.left == region.left\n     */\n    equalsPosition: function(region){\n        return this.top == region.top && this.left == region.left\n    },\n\n    /**\n     * Adds the given ammount to the left side of this region\n     * @param {Number} left The ammount to add\n     * @return {Region} this\n     */\n    addLeft: function(left){\n        var before = this._before()\n\n        this.left = this[0] = this.left + left\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the top side of this region\n     * @param {Number} top The ammount to add\n     * @return {Region} this\n     */\n    addTop: function(top){\n        var before = this._before()\n\n        this.top = this[1] = this.top + top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the bottom side of this region\n     * @param {Number} bottom The ammount to add\n     * @return {Region} this\n     */\n    addBottom: function(bottom){\n        var before = this._before()\n\n        this.bottom += bottom\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the right side of this region\n     * @param {Number} right The ammount to add\n     * @return {Region} this\n     */\n    addRight: function(right){\n        var before = this._before()\n\n        this.right += right\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Minimize the top side.\n     * @return {Region} this\n     */\n    minTop: function(){\n        return this.expand({top: 1})\n    },\n    /**\n     * Minimize the bottom side.\n     * @return {Region} this\n     */\n    maxBottom: function(){\n        return this.expand({bottom: 1})\n    },\n    /**\n     * Minimize the left side.\n     * @return {Region} this\n     */\n    minLeft: function(){\n        return this.expand({left: 1})\n    },\n    /**\n     * Maximize the right side.\n     * @return {Region} this\n     */\n    maxRight: function(){\n        return this.expand({right: 1})\n    },\n\n    /**\n     * Expands this region to the dimensions of the given region, or the document region, if no region is expanded.\n     * But only expand the given sides (any of the four can be expanded).\n     *\n     * @param {Object} directions\n     * @param {Boolean} [directions.top]\n     * @param {Boolean} [directions.bottom]\n     * @param {Boolean} [directions.left]\n     * @param {Boolean} [directions.right]\n     *\n     * @param {Region} [region] the region to expand to, defaults to the document region\n     * @return {Region} this region\n     */\n    expand: function(directions, region){\n        var docRegion = region || REGION.getDocRegion()\n        var list      = []\n        var direction\n        var before = this._before()\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            list.push(direction)\n        }\n\n        copyList(docRegion, this, list)\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Returns a clone of this region\n     * @return {Region} A new region, with the same position and dimension as this region\n     */\n    clone: function(){\n        return new REGION({\n                    top    : this.top,\n                    left   : this.left,\n                    right  : this.right,\n                    bottom : this.bottom\n                })\n    },\n\n    /**\n     * Returns true if this region contains the given point\n     * @param {Number/Object} x the x coordinate of the point\n     * @param {Number} [y] the y coordinate of the point\n     *\n     * @return {Boolean} true if this region constains the given point, false otherwise\n     */\n    containsPoint: function(x, y){\n        if (arguments.length == 1){\n            y = x.y\n            x = x.x\n        }\n\n        return this.left <= x  &&\n               x <= this.right &&\n               this.top <= y   &&\n               y <= this.bottom\n    },\n\n    /**\n     *\n     * @param region\n     *\n     * @return {Boolean} true if this region contains the given region, false otherwise\n     */\n    containsRegion: function(region){\n        return this.containsPoint(region.left, region.top)    &&\n               this.containsPoint(region.right, region.bottom)\n    },\n\n    /**\n     * Returns an object with the difference for {top, bottom} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {top,bottom}\n     */\n    diffHeight: function(region){\n        return this.diff(region, {top: true, bottom: true})\n    },\n\n    /**\n     * Returns an object with the difference for {left, right} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {left,right}\n     */\n    diffWidth: function(region){\n        return this.diff(region, {left: true, right: true})\n    },\n\n    /**\n     * Returns an object with the difference in sizes for the given directions, between this and region\n     *\n     * @param  {Region} region     The region to use for diff\n     * @param  {Object} directions An object with the directions to diff. Can have any of the following keys:\n     *  * left\n     *  * right\n     *  * top\n     *  * bottom\n     *\n     * @return {Object} and object with the same keys as the directions object, but the values being the\n     * differences between this region and the given region\n     */\n    diff: function(region, directions){\n        var result = {}\n        var dirName\n\n        for (dirName in directions) if ( hasOwn(directions, dirName) ) {\n            result[dirName] = this[dirName] - region[dirName]\n        }\n\n        return result\n    },\n\n    /**\n     * Returns the position, in {left,top} properties, of this region\n     *\n     * @return {Object} {left,top}\n     */\n    getPosition: function(){\n        return {\n            left: this.left,\n            top : this.top\n        }\n    },\n\n    /**\n     * Returns the point at the given position from this region.\n     *\n     * @param {String} position Any of:\n     *\n     *  * 'cx' - See {@link #getPointXCenter}\n     *  * 'cy' - See {@link #getPointYCenter}\n     *  * 'b'  - See {@link #getPointBottom}\n     *  * 'bc' - See {@link #getPointBottomCenter}\n     *  * 'l'  - See {@link #getPointLeft}F\n     *  * 'lc' - See {@link #getPointLeftCenter}\n     *  * 't'  - See {@link #getPointTop}\n     *  * 'tc' - See {@link #getPointTopCenter}\n     *  * 'r'  - See {@link #getPointRight}\n     *  * 'rc' - See {@link #getPointRightCenter}\n     *  * 'c'  - See {@link #getPointCenter}\n     *  * 'tl' - See {@link #getPointTopLeft}\n     *  * 'bl' - See {@link #getPointBottomLeft}\n     *  * 'br' - See {@link #getPointBottomRight}\n     *  * 'tr' - See {@link #getPointTopRight}\n     *\n     * @param {Boolean} asLeftTop\n     *\n     * @return {Object} either an object with {x,y} or {left,top} if asLeftTop is true\n     */\n    getPoint: function(position, asLeftTop){\n\n        //<debug>\n        if (!POINT_POSITIONS[position]) {\n            console.warn('The position ', position, ' could not be found! Available options are tl, bl, tr, br, l, r, t, b.');\n        }\n        //</debug>\n\n        var method = 'getPoint' + POINT_POSITIONS[position],\n            result = this[method]()\n\n        if (asLeftTop){\n            return {\n                left : result.x,\n                top  : result.y\n            }\n        }\n\n        return result\n    },\n\n    /**\n     * Returns a point with x = null and y being the middle of the left region segment\n     * @return {Object} {x,y}\n     */\n    getPointYCenter: function(){\n        return { x: null, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x being the middle of the top region segment\n     * @return {Object} {x,y}\n     */\n    getPointXCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: null }\n    },\n\n    /**\n     * Returns a point with x = null and y the region top position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointTop: function(){\n        return { x: null, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region top segment\n     * @return {Object} {x,y}\n     */\n    getPointTopCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the top-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopLeft: function(){\n        return { x: this.left, y: this.top}\n    },\n\n    /**\n     * Returns a point that is the top-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopRight: function(){\n        return { x: this.right, y: this.top}\n    },\n\n    /**\n     * Returns a point with x = null and y the region bottom position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointBottom: function(){\n        return { x: null, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region bottom segment\n     * @return {Object} {x,y}\n     */\n    getPointBottomCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the bottom-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomLeft: function(){\n        return { x: this.left, y: this.bottom}\n    },\n\n    /**\n     * Returns a point that is the bottom-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomRight: function(){\n        return { x: this.right, y: this.bottom}\n    },\n\n    /**\n     * Returns a point with y = null and x the region left position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointLeft: function(){\n        return { x: this.left, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region left segment\n     * @return {Object} {x,y}\n     */\n    getPointLeftCenter: function(){\n        return { x: this.left, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x the region right position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointRight: function(){\n        return { x: this.right, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region right segment\n     * @return {Object} {x,y}\n     */\n    getPointRightCenter: function(){\n        return { x: this.right, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point that is the center of the region\n     * @return {Object} {x,y}\n     */\n    getPointCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * @return {Number} returns the height of the region\n     */\n    getHeight: function(){\n        return this.bottom - this.top\n    },\n\n    /**\n     * @return {Number} returns the width of the region\n     */\n    getWidth: function(){\n        return this.right - this.left\n    },\n\n    /**\n     * @return {Number} returns the top property of the region\n     */\n    getTop: function(){\n        return this.top\n    },\n\n    /**\n     * @return {Number} returns the left property of the region\n     */\n    getLeft: function(){\n        return this.left\n    },\n\n    /**\n     * @return {Number} returns the bottom property of the region\n     */\n    getBottom: function(){\n        return this.bottom\n    },\n\n    /**\n     * @return {Number} returns the right property of the region\n     */\n    getRight: function(){\n        return this.right\n    },\n\n    /**\n     * Returns the area of the region\n     * @return {Number} the computed area\n     */\n    getArea: function(){\n        return this.getWidth() * this.getHeight()\n    },\n\n    constrainTo: function(contrain){\n        var intersect = this.getIntersection(contrain)\n        var shift\n\n        if (!intersect || !intersect.equals(this)){\n\n            var contrainWidth  = contrain.getWidth(),\n                contrainHeight = contrain.getHeight()\n\n            if (this.getWidth() > contrainWidth){\n                this.left = contrain.left\n                this.setWidth(contrainWidth)\n            }\n\n            if (this.getHeight() > contrainHeight){\n                this.top = contrain.top\n                this.setHeight(contrainHeight)\n            }\n\n            shift = {}\n\n            if (this.right > contrain.right){\n                shift.left = contrain.right - this.right\n            }\n\n            if (this.bottom > contrain.bottom){\n                shift.top = contrain.bottom - this.bottom\n            }\n\n            if (this.left < contrain.left){\n                shift.left = contrain.left - this.left\n            }\n\n            if (this.top < contrain.top){\n                shift.top = contrain.top - this.top\n            }\n\n            this.shift(shift)\n\n            return true\n        }\n\n        return false\n    },\n\n    __IS_REGION: true\n\n    /**\n     * @property {Number} top\n     */\n\n    /**\n     * @property {Number} right\n     */\n\n    /**\n     * @property {Number} bottom\n     */\n\n    /**\n     * @property {Number} left\n     */\n\n    /**\n     * @property {Number} [0] the top property\n     */\n\n    /**\n     * @property {Number} [1] the left property\n     */\n\n    /**\n     * @method getIntersection\n     * Returns a region that is the intersection of this region and the given region\n     * @param  {Region} region The region to intersect with\n     * @return {Region}        The intersection region\n     */\n\n    /**\n     * @method getUnion\n     * Returns a region that is the union of this region with the given region\n     * @param  {Region} region  The region to make union with\n     * @return {Region}        The union region. The smallest region that contains both this and the given region.\n     */\n\n}, REGION.prototype)\n\nObject.defineProperties(REGION.prototype, {\n    width: {\n        get: function(){\n            return this.getWidth()\n        },\n        set: function(width){\n            return this.setWidth(width)\n        }\n    },\n    height: {\n        get: function(){\n            return this.getHeight()\n        },\n        set: function(height){\n            return this.setHeight(height)\n        }\n    }\n})\n\nrequire('./statics')(REGION)\n\nmodule.exports = REGION"
        },
        {
          "id": 126,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
          "name": "../react-menus/lib/align/index.js",
          "size": 854,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
          "profile": {
            "factory": 49,
            "building": 207,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 117,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
              "module": "../react-menus/lib/getSubMenuPositionStyle.js",
              "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
              "type": "cjs require",
              "userRequest": "./align",
              "loc": "5:13-31"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region-align')\nvar getConstrainRegion = require('./getConstrainRegion')\n\nmodule.exports = function(props, subMenuRegion, targetAlignRegion, constrainTo){\n    var constrainRegion = getConstrainRegion.call(this, constrainTo)\n\n    if (!constrainRegion){\n        return\n    }\n\n\n\n    if (typeof props.alignSubMenu === 'function'){\n        props.alignSubMenu(subMenuRegion, targetAlignRegion, constrainRegion)\n    } else {\n        var pos = subMenuRegion.alignTo(targetAlignRegion, [\n            //align to right\n            'tl-tr','bl-br',\n\n            //align to left\n            'tr-tl', 'br-bl'\n        ], { constrain: constrainRegion })\n\n        return (pos == 'tl-tr' || pos == 'tr-tl')?\n                    //align downwards\n                    1:\n\n                    //align upwards\n                    -1\n    }\n}"
        },
        {
          "id": 127,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/events/events.js",
          "name": "(webpack)/~/node-libs-browser/~/events/events.js",
          "size": 8251,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 34,
            "building": 30
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "events",
              "loc": "9:19-36"
            }
          ],
          "source": "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      }\n      throw TypeError('Uncaught, unspecified \"error\" event.');\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        len = arguments.length;\n        args = new Array(len - 1);\n        for (i = 1; i < len; i++)\n          args[i - 1] = arguments[i];\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    len = arguments.length;\n    args = new Array(len - 1);\n    for (i = 1; i < len; i++)\n      args[i - 1] = arguments[i];\n\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    var m;\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  var ret;\n  if (!emitter._events || !emitter._events[type])\n    ret = 0;\n  else if (isFunction(emitter._events[type]))\n    ret = 1;\n  else\n    ret = emitter._events[type].length;\n  return ret;\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n"
        },
        {
          "id": 128,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/inherits.js",
          "name": "../react-menus/~/region/src/inherits.js",
          "size": 315,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 62,
            "building": 33
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./inherits",
              "loc": "10:15-36"
            }
          ],
          "source": "'use strict';\n\nmodule.exports = function(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value       : ctor,\n            enumerable  : false,\n            writable    : true,\n            configurable: true\n        }\n    })\n}"
        },
        {
          "id": 129,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/validate.js",
          "name": "../react-menus/~/region/src/validate.js",
          "size": 583,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 63,
            "building": 70
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./validate",
              "loc": "11:15-36"
            },
            {
              "moduleId": 130,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
              "module": "../react-menus/~/region/src/statics.js",
              "moduleName": "../react-menus/~/region/src/statics.js",
              "type": "cjs require",
              "userRequest": "./validate",
              "loc": "4:15-36"
            }
          ],
          "source": "'use strict';\n\n/**\n * @static\n * Returns true if the given region is valid, false otherwise.\n * @param  {Region} region The region to check\n * @return {Boolean}        True, if the region is valid, false otherwise.\n * A region is valid if\n *  * left <= right  &&\n *  * top  <= bottom\n */\nmodule.exports = function validate(region){\n\n    var isValid = true\n\n    if (region.right < region.left){\n        isValid = false\n        region.right = region.left\n    }\n\n    if (region.bottom < region.top){\n        isValid = false\n        region.bottom = region.top\n    }\n\n    return isValid\n}"
        },
        {
          "id": 130,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
          "name": "../react-menus/~/region/src/statics.js",
          "size": 6712,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 64,
            "building": 64,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "./statics",
              "loc": "1032:0-20"
            }
          ],
          "source": "'use strict';\n\nvar hasOwn   = require('hasown')\nvar VALIDATE = require('./validate')\n\nmodule.exports = function(REGION){\n\n    var MAX = Math.max\n    var MIN = Math.min\n\n    var statics = {\n        init: function(){\n            var exportAsNonStatic = {\n                getIntersection      : true,\n                getIntersectionArea  : true,\n                getIntersectionHeight: true,\n                getIntersectionWidth : true,\n                getUnion             : true\n            }\n            var thisProto = REGION.prototype\n            var newName\n\n            var exportHasOwn = hasOwn(exportAsNonStatic)\n            var methodName\n\n            for (methodName in exportAsNonStatic) if (exportHasOwn(methodName)) {\n                newName = exportAsNonStatic[methodName]\n                if (typeof newName != 'string'){\n                    newName = methodName\n                }\n\n                ;(function(proto, methodName, protoMethodName){\n\n                    proto[methodName] = function(region){\n                        //<debug>\n                        if (!REGION[protoMethodName]){\n                            console.warn('cannot find method ', protoMethodName,' on ', REGION)\n                        }\n                        //</debug>\n                        return REGION[protoMethodName](this, region)\n                    }\n\n                })(thisProto, newName, methodName);\n            }\n        },\n\n        validate: VALIDATE,\n\n        /**\n         * Returns the region corresponding to the documentElement\n         * @return {Region} The region corresponding to the documentElement. This region is the maximum region visible on the screen.\n         */\n        getDocRegion: function(){\n            return REGION.fromDOM(document.documentElement)\n        },\n\n        from: function(reg){\n            if (reg.__IS_REGION){\n                return reg\n            }\n\n            if (typeof document != 'undefined'){\n                if (typeof HTMLElement != 'undefined' && reg instanceof HTMLElement){\n                    return REGION.fromDOM(reg)\n                }\n\n                if (reg.type && typeof reg.pageX !== 'undefined' && typeof reg.pageY !== 'undefined'){\n                    return REGION.fromEvent(reg)\n                }\n            }\n\n            return REGION(reg)\n        },\n\n        fromEvent: function(event){\n            return REGION.fromPoint({\n                x: event.pageX,\n                y: event.pageY\n            })\n        },\n\n        fromDOM: function(dom){\n            var rect = dom.getBoundingClientRect()\n            // var docElem = document.documentElement\n            // var win     = window\n\n            // var top  = rect.top + win.pageYOffset - docElem.clientTop\n            // var left = rect.left + win.pageXOffset - docElem.clientLeft\n\n            return new REGION({\n                top   : rect.top,\n                left  : rect.left,\n                bottom: rect.bottom,\n                right : rect.right\n            })\n        },\n\n        /**\n         * @static\n         * Returns a region that is the intersection of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region/Boolean}        The intersection region or false if no intersection found\n         */\n        getIntersection: function(first, second){\n\n            var area = this.getIntersectionArea(first, second)\n\n            if (area){\n                return new REGION(area)\n            }\n\n            return false\n        },\n\n        getIntersectionWidth: function(first, second){\n            var minRight  = MIN(first.right, second.right)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (maxLeft < minRight){\n                return minRight  - maxLeft\n            }\n\n            return 0\n        },\n\n        getIntersectionHeight: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minBottom = MIN(first.bottom,second.bottom)\n\n            if (maxTop  < minBottom){\n                return minBottom - maxTop\n            }\n\n            return 0\n        },\n\n        getIntersectionArea: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minRight  = MIN(first.right, second.right)\n            var minBottom = MIN(first.bottom,second.bottom)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (\n                    maxTop  < minBottom &&\n                    maxLeft < minRight\n                ){\n                return {\n                    top    : maxTop,\n                    right  : minRight,\n                    bottom : minBottom,\n                    left   : maxLeft,\n\n                    width  : minRight  - maxLeft,\n                    height : minBottom - maxTop\n                }\n            }\n\n            return false\n        },\n\n        /**\n         * @static\n         * Returns a region that is the union of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region}        The union region. The smallest region that contains both given regions.\n         */\n        getUnion: function(first, second){\n            var top    = MIN(first.top,   second.top)\n            var right  = MAX(first.right, second.right)\n            var bottom = MAX(first.bottom,second.bottom)\n            var left   = MIN(first.left,  second.left)\n\n            return new REGION(top, right, bottom, left)\n        },\n\n        /**\n         * @static\n         * Returns a region. If the reg argument is a region, returns it, otherwise return a new region built from the reg object.\n         *\n         * @param  {Region} reg A region or an object with either top, left, bottom, right or\n         * with top, left, width, height\n         * @return {Region} A region\n         */\n        getRegion: function(reg){\n            return REGION.from(reg)\n        },\n\n        /**\n         * Creates a region that corresponds to a point.\n         *\n         * @param  {Object} xy The point\n         * @param  {Number} xy.x\n         * @param  {Number} xy.y\n         *\n         * @return {Region}    The new region, with top==xy.y, bottom = xy.y and left==xy.x, right==xy.x\n         */\n        fromPoint: function(xy){\n            return new REGION({\n                        top    : xy.y,\n                        bottom : xy.y,\n                        left   : xy.x,\n                        right  : xy.x\n                    })\n        }\n    }\n\n    Object.keys(statics).forEach(function(key){\n        REGION[key] = statics[key]\n    })\n\n    REGION.init()\n}"
        },
        {
          "id": 131,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/curry.js",
          "name": "../react-menus/~/functionally/src/curry.js",
          "size": 581,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 151,
            "building": 61
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/curry",
              "loc": "78:16-38"
            },
            {
              "moduleId": 139,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/map.js",
              "module": "../react-menus/~/functionally/src/map.js",
              "moduleName": "../react-menus/~/functionally/src/map.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "3:12-30"
            },
            {
              "moduleId": 140,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/dot.js",
              "module": "../react-menus/~/functionally/src/dot.js",
              "moduleName": "../react-menus/~/functionally/src/dot.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "3:12-30"
            },
            {
              "moduleId": 141,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/maxArgs.js",
              "module": "../react-menus/~/functionally/src/maxArgs.js",
              "moduleName": "../react-menus/~/functionally/src/maxArgs.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "4:12-30"
            },
            {
              "moduleId": 142,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
              "module": "../react-menus/~/functionally/src/newify.js",
              "moduleName": "../react-menus/~/functionally/src/newify.js",
              "type": "cjs require",
              "userRequest": "./curry",
              "loc": "4:13-31"
            }
          ],
          "source": "'use strict'\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
        },
        {
          "id": 132,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/compose.js",
          "name": "../react-menus/~/functionally/src/compose.js",
          "size": 558,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 153,
            "building": 62
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/compose",
              "loc": "149:18-42"
            }
          ],
          "source": "'use strict'\n\nfunction composeTwo(f, g) {\n    return function () {\n        return f(g.apply(this, arguments))\n    }\n}\n\n/*\n * @param {Function...} an enumeration of functions, each consuming the result of the following function.\n *\n * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\n *\n * @return the result of the first function in the enumeration\n */\nmodule.exports = function(){\n\n    var args = arguments\n    var len  = args.length\n    var i    = 0\n    var f    = args[0]\n\n    while (++i < len) {\n        f = composeTwo(f, args[i])\n    }\n\n    return f\n}"
        },
        {
          "id": 133,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/chain.js",
          "name": "../react-menus/~/functionally/src/chain.js",
          "size": 352,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 153,
            "building": 64
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/chain",
              "loc": "151:16-38"
            }
          ],
          "source": "'use strict'\n\nfunction chain(where, fn, secondFn){\n\n    return function(){\n        if (where === 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        var result = fn.apply(this, arguments)\n\n        if (where !== 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        return result\n    }\n}\n\nmodule.exports = chain"
        },
        {
          "id": 134,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/once.js",
          "name": "../react-menus/~/functionally/src/once.js",
          "size": 263,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 154,
            "building": 65
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/once",
              "loc": "153:15-36"
            }
          ],
          "source": "'use once'\n\nfunction once(fn, scope){\n\n    var called\n    var result\n\n    return function(){\n        if (called){\n            return result\n        }\n\n        called = true\n\n        return result = fn.apply(scope || this, arguments)\n    }\n}\n\nmodule.exports = once"
        },
        {
          "id": 135,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgsArray.js",
          "name": "../react-menus/~/functionally/src/bindArgsArray.js",
          "size": 298,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 155,
            "building": 66
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/bindArgsArray",
              "loc": "155:24-54"
            },
            {
              "moduleId": 136,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgs.js",
              "module": "../react-menus/~/functionally/src/bindArgs.js",
              "moduleName": "../react-menus/~/functionally/src/bindArgs.js",
              "type": "cjs require",
              "userRequest": "./bindArgsArray",
              "loc": "4:20-46"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n    return function(){\n        var thisArgs = SLICE.call(args || [])\n\n        if (arguments.length){\n            thisArgs.push.apply(thisArgs, arguments)\n        }\n\n        return fn.apply(this, thisArgs)\n    }\n}"
        },
        {
          "id": 136,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgs.js",
          "name": "../react-menus/~/functionally/src/bindArgs.js",
          "size": 182,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 155,
            "building": 68,
            "dependencies": 31
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/bindArgs",
              "loc": "157:19-44"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar bindArgsArray = require('./bindArgsArray')\n\nmodule.exports = function(fn){\n    return bindArgsArray(fn, SLICE.call(arguments,1))\n}"
        },
        {
          "id": 137,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgsArray.js",
          "name": "../react-menus/~/functionally/src/lockArgsArray.js",
          "size": 241,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 155,
            "building": 74
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/lockArgsArray",
              "loc": "159:24-54"
            },
            {
              "moduleId": 138,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgs.js",
              "module": "../react-menus/~/functionally/src/lockArgs.js",
              "moduleName": "../react-menus/~/functionally/src/lockArgs.js",
              "type": "cjs require",
              "userRequest": "./lockArgsArray",
              "loc": "4:20-46"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n\n    return function(){\n        if (!Array.isArray(args)){\n            args = SLICE.call(args || [])\n        }\n\n        return fn.apply(this, args)\n    }\n}"
        },
        {
          "id": 138,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgs.js",
          "name": "../react-menus/~/functionally/src/lockArgs.js",
          "size": 183,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 156,
            "building": 74,
            "dependencies": 24
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/lockArgs",
              "loc": "161:19-44"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar lockArgsArray = require('./lockArgsArray')\n\nmodule.exports = function(fn){\n    return lockArgsArray(fn, SLICE.call(arguments, 1))\n}"
        },
        {
          "id": 139,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/map.js",
          "name": "../react-menus/~/functionally/src/map.js",
          "size": 192,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 156,
            "building": 79,
            "dependencies": 19
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/map",
              "loc": "519:9-29"
            }
          ],
          "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(fn, value){\n    return value != undefined && typeof value.map?\n            value.map(fn):\n            fn(value)\n})"
        },
        {
          "id": 140,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/dot.js",
          "name": "../react-menus/~/functionally/src/dot.js",
          "size": 148,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 157,
            "building": 83,
            "dependencies": 14
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/dot",
              "loc": "521:9-29"
            }
          ],
          "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(prop, value){\n    return value != undefined? value[prop]: undefined\n})"
        },
        {
          "id": 141,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/maxArgs.js",
          "name": "../react-menus/~/functionally/src/maxArgs.js",
          "size": 211,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 157,
            "building": 87,
            "dependencies": 10
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/maxArgs",
              "loc": "523:13-37"
            }
          ],
          "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar curry = require('./curry')\n\nmodule.exports = function(fn, count){\n    return function(){\n        return fn.apply(this, SLICE.call(arguments, 0, count))\n    }\n}"
        },
        {
          "id": 142,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
          "name": "../react-menus/~/functionally/src/newify.js",
          "size": 108,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "profile": {
            "factory": 157,
            "building": 90,
            "dependencies": 6
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 124,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
              "module": "../react-menus/~/functionally/index.js",
              "moduleName": "../react-menus/~/functionally/index.js",
              "type": "cjs require",
              "userRequest": "./src/newify",
              "loc": "642:12-35"
            }
          ],
          "source": "'use strict'\n\nvar newify = require('newify')\nvar curry  = require('./curry')\n\nmodule.exports = curry(newify)"
        },
        {
          "id": 143,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "name": "../react-menus/~/region/~/copy-utils/index.js",
          "size": 6752,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 91,
            "building": 106
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "copy-utils",
              "loc": "5:16-37"
            }
          ],
          "source": "module.exports = function(){\n\n    'use strict'\n\n    var HAS_OWN       = Object.prototype.hasOwnProperty,\n        STR_OBJECT    = 'object',\n        STR_UNDEFINED = 'undefined'\n\n    return {\n\n        /**\n         * Copies all properties from source to destination\n         *\n         *      copy({name: 'jon',age:5}, this);\n         *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copy: require('./copy'),\n\n        /**\n         * Copies all properties from source to destination, if the property does not exist into the destination\n         *\n         *      copyIf({name: 'jon',age:5}, {age:7})\n         *      // => { name: 'jon', age: 7}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copyIf: require('./copyIf'),\n\n        /**\n         * Copies all properties from source to a new object, with the given value. This object is returned\n         *\n         *      copyAs({name: 'jon',age:5})\n         *      // => the resulting object will have the 'name' and 'age' properties set to 1\n         *\n         * @param {Object} source\n         * @param {Object/Number/String} [value=1]\n         *\n         * @return {Object} destination\n         */\n        copyAs: function(source, value){\n\n            var destination = {}\n\n            value = value || 1\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) ) {\n                    destination[i] = value\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies all properties named in the list, from source to destination\n         *\n         *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n         *      // => {name: 'jon', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyList: require('./copyList'),\n\n        /**\n         * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n         *\n         *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n         *      // => {name: 'jon', age: 10}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyListIf: require('./copyListIf'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination\n         *\n         *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n         *      // => {name: 'jon', age: 5, theYear: 2006}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeys: require('./copyKeys'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination,\n         * but only if the property does not already exist in the destination object\n         *\n         *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n         *      // => {aname: 'test', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeysIf: require('./copyKeysIf'),\n\n        copyExceptKeys: function(source, destination, exceptKeys){\n            destination = destination || {}\n            exceptKeys  = exceptKeys  || {}\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) && !HAS_OWN.call(exceptKeys, i) ) {\n\n                    destination[i] = source[i]\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies the named keys from source to destination.\n         * For the keys that are functions, copies the functions bound to the source\n         *\n         * @param  {Object} source      The source object\n         * @param  {Object} destination The target object\n         * @param  {Object} namedKeys   An object with the names of the keys to copy The values from the keys in this object\n         *                              need to be either numbers or booleans if you want to copy the property under the same name,\n         *                              or a string if you want to copy the property under a different name\n         * @return {Object}             Returns the destination object\n         */\n        bindCopyKeys: function(source, destination, namedKeys){\n            if (arguments.length == 2){\n                namedKeys = destination\n                destination = null\n            }\n\n            destination = destination || {}\n\n            if (\n                       source != null && typeof source    === STR_OBJECT &&\n                    namedKeys != null && typeof namedKeys === STR_OBJECT\n                ) {\n\n\n                var typeOfNamedProperty,\n                    namedPropertyValue,\n\n                    typeOfSourceProperty,\n                    propValue\n\n\n                for(var propName in namedKeys) if (HAS_OWN.call(namedKeys, propName)) {\n\n                    namedPropertyValue = namedKeys[propName]\n                    typeOfNamedProperty = typeof namedPropertyValue\n\n                    propValue = source[propName]\n                    typeOfSourceProperty = typeof propValue\n\n\n                    if ( typeOfSourceProperty !== STR_UNDEFINED ) {\n\n                        destination[\n                            typeOfNamedProperty == 'string'?\n                                            namedPropertyValue :\n                                            propName\n                            ] = typeOfSourceProperty == 'function' ?\n                                            propValue.bind(source):\n                                            propValue\n                    }\n                }\n            }\n\n            return destination\n        }\n    }\n\n}()"
        },
        {
          "id": 144,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
          "name": "../react-menus/~/newify/index.js",
          "size": 161,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 94,
            "building": 108
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "newify",
              "loc": "4:16-33"
            },
            {
              "moduleId": 142,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
              "module": "../react-menus/~/functionally/src/newify.js",
              "moduleName": "../react-menus/~/functionally/src/newify.js",
              "type": "cjs require",
              "userRequest": "newify",
              "loc": "3:13-30"
            }
          ],
          "source": "var getInstantiatorFunction = require('./getInstantiatorFunction')\n\nmodule.exports = function(fn, args){\n\treturn getInstantiatorFunction(args.length)(fn, args)\n}"
        },
        {
          "id": 145,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/hasown/index.js",
          "name": "../react-menus/~/region/~/hasown/index.js",
          "size": 700,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 96,
            "building": 112
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "hasown",
              "loc": "3:16-33"
            },
            {
              "moduleId": 130,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
              "module": "../react-menus/~/region/src/statics.js",
              "moduleName": "../react-menus/~/region/src/statics.js",
              "type": "cjs require",
              "userRequest": "hasown",
              "loc": "3:15-32"
            }
          ],
          "source": "'use strict'\n\nvar hasOwn = Object.prototype.hasOwnProperty\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\n\nmodule.exports = curry(function(object, property){\n    return hasOwn.call(object, property)\n})"
        },
        {
          "id": 146,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
          "name": "../react-menus/~/region/~/i-s/index.js",
          "size": 33,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "profile": {
            "factory": 94,
            "building": 107
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 125,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
              "module": "../react-menus/~/region/src/index.js",
              "moduleName": "../react-menus/~/region/src/index.js",
              "type": "cjs require",
              "userRequest": "i-s",
              "loc": "8:16-30"
            }
          ],
          "source": "module.exports = require('./src')"
        },
        {
          "id": 147,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "name": "../react-menus/~/region-align/index.js",
          "size": 6793,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
          "profile": {
            "factory": 107,
            "building": 77,
            "dependencies": 5
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 126,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
              "module": "../react-menus/lib/align/index.js",
              "moduleName": "../react-menus/lib/align/index.js",
              "type": "cjs require",
              "userRequest": "region-align",
              "loc": "3:13-36"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\n\nrequire('./Region.static')\nrequire('./Region.proto')\n\nvar COMPUTE_ALIGN_REGION = require('./computeAlignRegion')\n\n/**\n * region-align module exposes methods for aligning {@link Element} and {@link Region} instances\n *\n * The #alignTo method aligns this to the target element/region using the specified positions. See #alignTo for a graphical example.\n *\n *\n *      var div = Element.select('div.first')\n *\n *      div.alignTo(Element.select('body') , 'br-br')\n *\n *      //aligns the div to be in the bottom-right corner of the body\n *\n * Other useful methods\n *\n *  * {@link #alignRegions} - aligns a given source region to a target region\n *  * {@link #COMPUTE_ALIGN_REGION} - given a source region and a target region, and alignment positions, returns a clone of the source region, but aligned to satisfy the given alignments\n */\n\n\n/**\n * Aligns sourceRegion to targetRegion. It modifies the sourceRegion in order to perform the correct alignment.\n * See #COMPUTE_ALIGN_REGION for details and examples.\n *\n * This method calls #COMPUTE_ALIGN_REGION passing to it all its arguments. The #COMPUTE_ALIGN_REGION method returns a region that is properly aligned.\n * If this returned region position/size differs from sourceRegion, then the sourceRegion is modified to be an exact copy of the aligned region.\n *\n * @inheritdoc #COMPUTE_ALIGN_REGION\n * @return {String} the position used for alignment\n */\nRegion.alignRegions = function(sourceRegion, targetRegion, positions, config){\n\n    var result        = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var alignedRegion = result.region\n\n    if ( !alignedRegion.equals(sourceRegion) ) {\n        sourceRegion.setRegion(alignedRegion)\n    }\n\n    return result.position\n\n}\n\n    /**\n     *\n     * The #alignTo method aligns this to the given target region, using the specified alignment position(s).\n     * You can also specify a constrain for the alignment.\n     *\n     * Example\n     *\n     *      BIG\n     *      ________________________\n     *      |  _______              |\n     *      | |       |             |\n     *      | |   A   |             |\n     *      | |       |      _____  |\n     *      | |_______|     |     | |\n     *      |               |  B  | |\n     *      |               |     | |\n     *      |_______________|_____|_|\n     *\n     * Assume the *BIG* outside rectangle is our constrain region, and you want to align the *A* rectangle\n     * to the *B* rectangle. Ideally, you'll want their tops to be aligned, and *A* to be placed at the right side of *B*\n     *\n     *\n     *      //so we would align them using\n     *\n     *      A.alignTo(B, 'tl-tr', { constrain: BIG })\n     *\n     * But this would result in\n     *\n     *       BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |                _____ _|_____\n     *      |               |     | .     |\n     *      |               |  B  | . A   |\n     *      |               |     | .     |\n     *      |_______________|_____|_._____|\n     *\n     *\n     * Which is not what we want. So we specify an array of options to try\n     *\n     *      A.alignTo(B, ['tl-tr', 'tr-tl'], { constrain: BIG })\n     *\n     * So by this we mean: try to align A(top,left) with B(top,right) and stick to the BIG constrain. If this is not possible,\n     * try the next option: align A(top,right) with B(top,left)\n     *\n     * So this is what we end up with\n     *\n     *      BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |        _______ _____  |\n     *      |       |       |     | |\n     *      |       |   A   |  B  | |\n     *      |       |       |     | |\n     *      |_______|_______|_____|_|\n     *\n     *\n     * Which is a lot better!\n     *\n     * @param {Element/Region} target The target to which to align this alignable.\n     *\n     * @param {String[]/String} positions The positions for the alignment.\n     *\n     * Example:\n     *\n     *      'br-tl'\n     *      ['br-tl','br-tr','cx-tc']\n     *\n     * This method will try to align using the first position. But if there is a constrain region, that position might not satisfy the constrain.\n     * If this is the case, the next positions will be tried. If one of them satifies the constrain, it will be used for aligning and it will be returned from this method.\n     *\n     * If no position matches the contrain, the one with the largest intersection of the source region with the constrain will be used, and this alignable will be resized to fit the constrain region.\n     *\n     * @param {Object} config A config object with other configuration for this method\n     *\n     * @param {Array[]/Object[]/Object} config.offset The offset to use for aligning. If more that one offset is specified, then offset at a given index is used with the position at the same index.\n     *\n     * An offset can have the following form:\n     *\n     *      [left_offset, top_offset]\n     *      {left: left_offset, top: top_offset}\n     *      {x: left_offset, y: top_offset}\n     *\n     * You can pass one offset or an array of offsets. In case you pass just one offset,\n     * it cannot have the array form, so you cannot call\n     *\n     *      this.alignTo(target, positions, [10, 20])\n     *\n     * If you do, it will not be considered. Instead, please use\n     *\n     *      this.alignTo(target, positions, {x: 10, y: 20})\n     *\n     * Or\n     *\n     *      this.alignTo(target, positions, [[10, 20]] )\n     *\n     * @param {Boolean/Element/Region} config.constrain If boolean, target will be constrained to the document region, otherwise,\n     * getRegion will be called on this argument to determine the region we need to constrain to.\n     *\n     * @param {Boolean/Object} config.sync Either boolean or an object with {width, height}. If it is boolean,\n     * both width and height will be synced. If directions are specified, will only sync the direction which is specified as true\n     *\n     * @return {String}\n     *\n     */\nRegion.prototype.alignTo = function(target, positions, config){\n\n    config = config || {}\n\n    var sourceRegion = this\n    var targetRegion = Region.from(target)\n\n    var result = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var resultRegion = result.region\n\n    if (!resultRegion.equalsSize(sourceRegion)){\n        this.setSize(resultRegion.getSize())\n    }\n    if (!resultRegion.equalsPosition(sourceRegion)){\n        this.setPosition(resultRegion.getPosition(), { absolute: !!config.absolute })\n    }\n\n    return result.position\n}\n\nmodule.exports = Region"
        },
        {
          "id": 148,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copy.js",
          "name": "../react-menus/~/region/~/copy-utils/copy.js",
          "size": 677,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 53,
            "building": 20
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copy",
              "loc": "22:14-31"
            }
          ],
          "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\n\n/**\n * Copies all properties from source to destination\n *\n *      copy({name: 'jon',age:5}, this);\n *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT ){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) ) {\n            destination[i] = source[i]\n        }\n\n    }\n\n    return destination\n}"
        },
        {
          "id": 149,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyIf.js",
          "name": "../react-menus/~/region/~/copy-utils/copyIf.js",
          "size": 754,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 53,
            "building": 22
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyIf",
              "loc": "35:16-35"
            }
          ],
          "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties from source to destination, if the property does not exist into the destination\n *\n *      copyIf({name: 'jon',age:5}, {age:7})\n *      // => { name: 'jon', age: 7}\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) && (typeof destination[i] === STR_UNDEFINED) ) {\n\n            destination[i] = source[i]\n\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 150,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyList.js",
          "name": "../react-menus/~/region/~/copy-utils/copyList.js",
          "size": 900,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 54,
            "building": 29
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyList",
              "loc": "77:18-39"
            },
            {
              "moduleId": 152,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeys.js",
              "module": "../react-menus/~/region/~/copy-utils/copyKeys.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/copyKeys.js",
              "type": "cjs require",
              "userRequest": "./copyList",
              "loc": "7:15-36"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination\n *\n *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n *      // => {name: 'jon', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len; i++ ){\n        propName = list[i]\n\n        if ( typeof source[propName] !== STR_UNDEFINED ) {\n            destination[list[i]] = source[list[i]]\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 151,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyListIf.js",
          "name": "../react-menus/~/region/~/copy-utils/copyListIf.js",
          "size": 1067,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 53,
            "building": 23
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyListIf",
              "loc": "91:20-43"
            },
            {
              "moduleId": 153,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeysIf.js",
              "module": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
              "type": "cjs require",
              "userRequest": "./copyListIf",
              "loc": "7:17-40"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n *\n *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n *      // => {name: 'jon', age: 10}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len ; i++ ){\n        propName = list[i]\n        if (\n                (typeof source[propName]      !== STR_UNDEFINED) &&\n                (typeof destination[propName] === STR_UNDEFINED)\n            ){\n            destination[propName] = source[propName]\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 152,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeys.js",
          "name": "../react-menus/~/region/~/copy-utils/copyKeys.js",
          "size": 1534,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 54,
            "building": 33,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyKeys",
              "loc": "105:18-39"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyList = require('./copyList')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination\n *\n *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n *      // => {name: 'jon', age: 5, theYear: 2006}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyList(source, destination, namedKeys)\n    }\n\n    if (\n           source != null && typeof source    === STR_OBJECT &&\n        namedKeys != null && typeof namedKeys === STR_OBJECT\n    ) {\n        var typeOfNamedProperty\n        var namedPropertyValue\n\n        for  (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n            namedPropertyValue  = namedKeys[propName]\n            typeOfNamedProperty = typeof namedPropertyValue\n\n            if (typeof source[propName] !== STR_UNDEFINED){\n                destination[typeOfNamedProperty == 'string'? namedPropertyValue : propName] = source[propName]\n            }\n        }\n    }\n\n    return destination\n}"
        },
        {
          "id": 153,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeysIf.js",
          "name": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
          "size": 1869,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "profile": {
            "factory": 54,
            "building": 25,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 143,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
              "module": "../react-menus/~/region/~/copy-utils/index.js",
              "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
              "type": "cjs require",
              "userRequest": "./copyKeysIf",
              "loc": "120:20-43"
            }
          ],
          "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyListIf = require('./copyListIf')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination,\n * but only if the property does not already exist in the destination object\n *\n *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n *      // => {aname: 'test', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyListIf(source, destination, namedKeys)\n    }\n\n    if (\n               source != null && typeof source    === STR_OBJECT &&\n            namedKeys != null && typeof namedKeys === STR_OBJECT\n        ) {\n\n            var typeOfNamedProperty\n            var namedPropertyValue\n            var newPropertyName\n\n            for (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n\n                namedPropertyValue  = namedKeys[propName]\n                typeOfNamedProperty = typeof namedPropertyValue\n                newPropertyName     = typeOfNamedProperty == 'string'? namedPropertyValue : propName\n\n                if (\n                        typeof      source[propName]        !== STR_UNDEFINED &&\n                        typeof destination[newPropertyName] === STR_UNDEFINED\n                    ) {\n                    destination[newPropertyName] = source[propName]\n                }\n\n            }\n        }\n\n    return destination\n}"
        },
        {
          "id": 154,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/getInstantiatorFunction.js",
          "name": "../react-menus/~/newify/getInstantiatorFunction.js",
          "size": 512,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
          "profile": {
            "factory": 52,
            "building": 29
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 144,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
              "module": "../react-menus/~/newify/index.js",
              "moduleName": "../react-menus/~/newify/index.js",
              "type": "cjs require",
              "userRequest": "./getInstantiatorFunction",
              "loc": "1:30-66"
            }
          ],
          "source": "module.exports = function(){\n\n    'use strict';\n\n    var fns = {}\n\n    return function(len){\n\n        if ( ! fns [len ] ) {\n\n            var args = []\n            var i    = 0\n\n            for (; i < len; i++ ) {\n                args.push( 'a[' + i + ']')\n            }\n\n            fns[len] = new Function(\n                            'c',\n                            'a',\n                            'return new c(' + args.join(',') + ')'\n                        )\n        }\n\n        return fns[len]\n    }\n\n}()"
        },
        {
          "id": 155,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "name": "../react-menus/~/region/~/i-s/src/index.js",
          "size": 489,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
          "profile": {
            "factory": 61,
            "building": 26
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 146,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
              "module": "../react-menus/~/region/~/i-s/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/index.js",
              "type": "cjs require",
              "userRequest": "./src",
              "loc": "1:17-33"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = {\n    'numeric'  : require('./numeric'),\n    'number'   : require('./number'),\n    'int'      : require('./int'),\n    'float'    : require('./float'),\n    'string'   : require('./string'),\n    'function' : require('./function'),\n    'object'   : require('./object'),\n    'arguments': require('./arguments'),\n    'boolean'  : require('./boolean'),\n    'date'     : require('./date'),\n    'regexp'   : require('./regexp'),\n    'array'    : require('./array')\n}"
        },
        {
          "id": 156,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.static.js",
          "name": "../react-menus/~/region-align/Region.static.js",
          "size": 2874,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "profile": {
            "factory": 4,
            "building": 36,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 147,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
              "module": "../react-menus/~/region-align/index.js",
              "moduleName": "../react-menus/~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./Region.static",
              "loc": "5:0-26"
            }
          ],
          "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n * @static\n * Aligns the source region to the target region, so as to correspond to the given alignment.\n *\n * NOTE that this method makes changes on the sourceRegion in order for it to be aligned as specified.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n *\n * @param {String} align A string with 2 valid align positions, eg: 'tr-bl'.\n * For valid positions, see {@link Region#getPoint}\n *\n * Having 2 regions, we need to be able to align them as we wish:\n *\n * for example, if we have\n *\n *       source    target\n *       ________________\n *       ____\n *      |    |     ________\n *      |____|    |        |\n *                |        |\n *                |________|\n *\n * and we align 't-t', we get:\n *\n *       source    target\n *       _________________\n *\n *       ____      ________\n *      |    |    |        |\n *      |____|    |        |\n *                |________|\n *\n *  In this case, the source was moved down to be aligned to the top of the target\n *\n *\n * and if we align 'tc-tc' we get\n *\n *       source     target\n *       __________________\n *\n *                 ________\n *                | |    | |\n *                | |____| |\n *                |________|\n *\n *  Since the source was moved to have the top-center point to be the same with target top-center\n *\n *\n *\n * @return {RegionClass} The Region class\n */\nRegion.align = function(sourceRegion, targetRegion, align){\n\n    targetRegion = Region.from(targetRegion)\n\n    align = (align || 'c-c').split('-')\n\n    //<debug>\n    if (align.length != 2){\n        console.warn('Incorrect region alignment! The align parameter need to be in the form \\'br-c\\', that is, a - separated string!', align)\n    }\n    //</debug>\n\n    return Region.alignToPoint(sourceRegion, targetRegion.getPoint(align[1]), align[0])\n}\n\n/**\n * Modifies the given region to be aligned to the point, as specified by anchor\n *\n * @param {Region} region The region to align to the point\n * @param {Object} point The point to be used as a reference\n * @param {Number} point.x\n * @param {Number} point.y\n * @param {String} anchor The position where to anchor the region to the point. See {@link #getPoint} for available options/\n *\n * @return {Region} the given region\n */\nRegion.alignToPoint = function(region, point, anchor){\n\n    region = Region.from(region)\n\n    var sourcePoint = region.getPoint(anchor)\n    var count       = 0\n    var shiftObj    = {}\n\n    if (\n            sourcePoint.x != null &&\n            point.x != null\n        ){\n\n            count++\n            shiftObj.left = point.x - sourcePoint.x\n    }\n\n    if (\n            sourcePoint.y != null &&\n            point.y != null\n        ){\n            count++\n            shiftObj.top = point.y - sourcePoint.y\n    }\n\n    if (count){\n\n        region.shift(shiftObj)\n\n    }\n\n    return region\n}"
        },
        {
          "id": 157,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.proto.js",
          "name": "../react-menus/~/region-align/Region.proto.js",
          "size": 789,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "profile": {
            "factory": 4,
            "building": 38,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 147,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
              "module": "../react-menus/~/region-align/index.js",
              "moduleName": "../react-menus/~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./Region.proto",
              "loc": "6:0-25"
            }
          ],
          "source": "'use strict';\n\nvar Region = require('region')\n\n/**\n *\n * Aligns this region to the given region\n * @param {Region} region\n * @param {String} alignPositions For available positions, see {@link #getPoint}\n *\n *     eg: 'tr-bl'\n *\n * @return this\n */\nRegion.prototype.alignToRegion = function(region, alignPositions){\n    Region.align(this, region, alignPositions)\n\n    return this\n}\n\n/**\n * Aligns this region to the given point, in the anchor position\n * @param {Object} point eg: {x: 20, y: 600}\n * @param {Number} point.x\n * @param {Number} point.y\n *\n * @param {String} anchor For available positions, see {@link #getPoint}\n *\n *     eg: 'bl'\n *\n * @return this\n */\n Region.prototype.alignToPoint = function(point, anchor){\n    Region.alignToPoint(this, point, anchor)\n\n    return this\n}"
        },
        {
          "id": 158,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
          "name": "../react-menus/~/region-align/computeAlignRegion.js",
          "size": 3447,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "profile": {
            "factory": 5,
            "building": 40,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 147,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
              "module": "../react-menus/~/region-align/index.js",
              "moduleName": "../react-menus/~/region-align/index.js",
              "type": "cjs require",
              "userRequest": "./computeAlignRegion",
              "loc": "8:27-58"
            }
          ],
          "source": "'use strict'\n\nvar ALIGN_TO_NORMALIZED = require('./alignToNormalized')\n\nvar Region = require('region')\n\n/**\n * @localdoc Given source and target regions, and the given alignments required, returns a region that is the resulting allignment.\n * Does not modify the sourceRegion.\n *\n * Example\n *\n *      var sourceRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *\n *      var targetRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *      //has top-left at (10,10)\n *      //and bottom-right at (40, 100)\n *\n *      var alignRegion = alignable.COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, 'tl-br')\n *\n *      //alignRegion will be a clone of sourceRegion, but will have the\n *      //top-left corner aligned with bottom-right of targetRegion\n *\n *      alignRegion.get() // => { top: 40, left: 100, bottom: 70, right: 190 }\n *\n * @param  {Region} sourceRegion The source region to align to targetRegion\n * @param  {Region} targetRegion The target region to which to align the sourceRegion\n * @param  {String/String[]} positions    A string ( delimited by \"-\" characters ) or an array of strings with the position to try, in the order of their priority.\n * See Region#getPoint for a list of available positions. They can be combined in any way.\n * @param  {Object} config      A config object with other configuration for the alignment\n * @param  {Object/Object[]} config.offset      Optional offsets. Either an object or an array with a different offset for each position\n * @param  {Element/Region/Boolean} config.constrain  The constrain to region or element. If the boolean true, Region.getDocRegion() will be used\n * @param  {Object/Boolean} config.sync   A boolean object that indicates whether to sync sourceRegion and targetRegion sizes (width/height or both). Can be\n *\n *  * true - in order to sync both width and height\n *  * { width: true }  - to only sync width\n *  * { height: true } - to only sync height\n *  * { size: true }   - to sync both width and height\n *\n * @return {Object} an object with the following keys:\n *\n *  * position - the position where the alignment was made. One of the given positions\n *  * region   - the region where the alignment is in place\n *  * positionChanged - boolean value indicating if the position of the returned region is different from the position of sourceRegion\n *  * widthChanged    - boolean value indicating if the width of the returned region is different from the width of sourceRegion\n *  * heightChanged   - boolean value indicating if the height of the returned region is different from the height of sourceRegion\n */\nfunction COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config){\n    sourceRegion = Region.from(sourceRegion)\n\n    var sourceClone = sourceRegion.clone()\n    var position    = ALIGN_TO_NORMALIZED(sourceClone, targetRegion, positions, config)\n\n    return {\n        position        : position,\n        region          : sourceClone,\n        widthChanged    : sourceClone.getWidth() != sourceRegion.getWidth(),\n        heightChanged   : sourceClone.getHeight() != sourceRegion.getHeight(),\n        positionChanged : sourceClone.equalsPosition(sourceRegion)\n    }\n}\n\n\nmodule.exports = COMPUTE_ALIGN_REGION"
        },
        {
          "id": 159,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/numeric.js",
          "name": "../react-menus/~/region/~/i-s/src/numeric.js",
          "size": 111,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 40,
            "building": 9
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./numeric",
              "loc": "4:17-37"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return !isNaN( parseFloat( value ) ) && isFinite( value )\n}"
        },
        {
          "id": 160,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/number.js",
          "name": "../react-menus/~/region/~/i-s/src/number.js",
          "size": 105,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 40,
            "building": 9
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "5:17-36"
            },
            {
              "moduleId": 161,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/int.js",
              "module": "../react-menus/~/region/~/i-s/src/int.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/int.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "3:13-32"
            },
            {
              "moduleId": 162,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/float.js",
              "module": "../react-menus/~/region/~/i-s/src/float.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/float.js",
              "type": "cjs require",
              "userRequest": "./number",
              "loc": "3:13-32"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value === 'number' && isFinite(value)\n}"
        },
        {
          "id": 161,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/int.js",
          "name": "../react-menus/~/region/~/i-s/src/int.js",
          "size": 143,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 40,
            "building": 10,
            "dependencies": 1
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./int",
              "loc": "6:17-33"
            }
          ],
          "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseInt(value, 10))\n}"
        },
        {
          "id": 162,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/float.js",
          "name": "../react-menus/~/region/~/i-s/src/float.js",
          "size": 181,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 40,
            "building": 12,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./float",
              "loc": "7:17-35"
            }
          ],
          "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseFloat(value, 10)) && !(value === parseInt(value, 10))\n}"
        },
        {
          "id": 163,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/string.js",
          "name": "../react-menus/~/region/~/i-s/src/string.js",
          "size": 85,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 41,
            "building": 12
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./string",
              "loc": "8:17-36"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'string'\n}"
        },
        {
          "id": 164,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/function.js",
          "name": "../react-menus/~/region/~/i-s/src/function.js",
          "size": 160,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 41,
            "building": 13
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./function",
              "loc": "9:17-38"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Function]'\n}"
        },
        {
          "id": 165,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/object.js",
          "name": "../react-menus/~/region/~/i-s/src/object.js",
          "size": 158,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 41,
            "building": 14
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./object",
              "loc": "10:17-36"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Object]'\n}"
        },
        {
          "id": 166,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/arguments.js",
          "name": "../react-menus/~/region/~/i-s/src/arguments.js",
          "size": 179,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 42,
            "building": 14
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./arguments",
              "loc": "11:17-39"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Arguments]' || !!value.callee\n}"
        },
        {
          "id": 167,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/boolean.js",
          "name": "../react-menus/~/region/~/i-s/src/boolean.js",
          "size": 86,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 42,
            "building": 14
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./boolean",
              "loc": "12:17-37"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'boolean'\n}"
        },
        {
          "id": 168,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/date.js",
          "name": "../react-menus/~/region/~/i-s/src/date.js",
          "size": 156,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 42,
            "building": 15
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./date",
              "loc": "13:17-34"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Date]'\n}"
        },
        {
          "id": 169,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/regexp.js",
          "name": "../react-menus/~/region/~/i-s/src/regexp.js",
          "size": 158,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 43,
            "building": 15
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./regexp",
              "loc": "14:17-36"
            }
          ],
          "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object RegExp]'\n}"
        },
        {
          "id": 170,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/array.js",
          "name": "../react-menus/~/region/~/i-s/src/array.js",
          "size": 81,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "profile": {
            "factory": 42,
            "building": 17
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 155,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
              "module": "../react-menus/~/region/~/i-s/src/index.js",
              "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
              "type": "cjs require",
              "userRequest": "./array",
              "loc": "15:17-35"
            }
          ],
          "source": "'use strict'\n\nmodule.exports = function(value){\n    return Array.isArray(value)\n}"
        },
        {
          "id": 171,
          "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/alignToNormalized.js",
          "name": "../react-menus/~/region-align/alignToNormalized.js",
          "size": 5225,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
          "profile": {
            "factory": 29,
            "building": 32,
            "dependencies": 0
          },
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 158,
              "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
              "module": "../react-menus/~/region-align/computeAlignRegion.js",
              "moduleName": "../react-menus/~/region-align/computeAlignRegion.js",
              "type": "cjs require",
              "userRequest": "./alignToNormalized",
              "loc": "3:26-56"
            }
          ],
          "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n *\n * This method is trying to align the sourceRegion to the targetRegion, given the alignment positions\n * and the offsets. It only modifies the sourceRegion\n *\n * This is all well and easy, but if there is a constrainTo region, the algorithm has to take it into account.\n * In this case, it works as follows.\n *\n *  * start with the first alignment position. Aligns the region, adds the offset and then check for the constraint.\n *  * if the constraint condition is ok, return the position.\n *  * otherwise, remember the intersection area, if the regions are intersecting.\n *  * then go to the next specified align position, and so on, computing the maximum intersection area.\n *\n * If no alignment fits the constrainRegion, the sourceRegion will be resized to match it,\n * using the position with the maximum intersection area.\n *\n * Since we have computed the index of the position with the max intersection area, take that position,\n * and align the sourceRegion accordingly. Then resize the sourceRegion to the intersection, and reposition\n * it again, since resizing it might have destroyed the alignment.\n *\n * Return the position.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n * @param {String[]} positions\n * @param {Object} config\n * @param {Array} config.offset\n * @param {Region} config.constrain\n * @param {Boolean/Object} config.sync\n *\n * @return {String/Undefined} the chosen position for the alignment, or undefined if no position found\n */\nfunction ALIGN_TO_NORMALIZED(sourceRegion, targetRegion, positions, config){\n\n    targetRegion = Region.from(targetRegion)\n\n    config = config  || {}\n\n    var constrainTo = config.constrain,\n        syncOption  = config.sync,\n        offsets     = config.offset || [],\n        syncWidth   = false,\n        syncHeight  = false,\n        sourceClone = sourceRegion.clone()\n\n    /*\n     * Prepare the method arguments: positions, offsets, constrain and sync options\n     */\n    if (!Array.isArray(positions)){\n        positions = positions? [positions]: []\n    }\n\n    if (!Array.isArray(offsets)){\n        offsets = offsets? [offsets]: []\n    }\n\n    if (constrainTo){\n        constrainTo = constrainTo === true?\n                                Region.getDocRegion():\n                                constrainTo.getRegion()\n    }\n\n    if (syncOption){\n\n        if (syncOption.size){\n            syncWidth  = true\n            syncHeight = true\n        } else {\n            syncWidth  = syncOption === true?\n                            true:\n                            syncOption.width || false\n\n            syncHeight = syncOption === true?\n                            true:\n                            syncOption.height || false\n        }\n    }\n\n    if (syncWidth){\n        sourceClone.setWidth(targetRegion.getWidth())\n    }\n    if (syncHeight){\n        sourceClone.setHeight(targetRegion.getHeight())\n\n    }\n\n    var offset,\n        i = 0,\n        len = positions.length,\n        pos,\n        intersection,\n        itArea,\n        maxArea = -1,\n        maxAreaIndex = -1\n\n    for (; i < len; i++){\n        pos     = positions[i]\n        offset  = offsets[i]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            if (!Array.isArray(offset)){\n                offset = offsets[i] = [offset.x || offset.left, offset.y || offset.top]\n            }\n\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //the source region is already aligned in the correct position\n\n        if (constrainTo){\n            //if we have a constrain region, test for the constrain\n            intersection = sourceClone.getIntersection(constrainTo)\n\n            if ( intersection && intersection.equals(sourceClone) ) {\n                //constrain respected, so return (the aligned position)\n\n                sourceRegion.set(sourceClone)\n                return pos\n            } else {\n\n                //the constrain was not respected, so continue trying\n                if (intersection && ((itArea = intersection.getArea()) > maxArea)){\n                    maxArea      = itArea\n                    maxAreaIndex = i\n                }\n            }\n\n        } else {\n            sourceRegion.set(sourceClone)\n            return pos\n        }\n    }\n\n    //no alignment respected the constraints\n    if (~maxAreaIndex){\n        pos     = positions[maxAreaIndex]\n        offset  = offsets[maxAreaIndex]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //we are sure an intersection exists, because of the way the maxAreaIndex was computed\n        intersection = sourceClone.getIntersection(constrainTo)\n\n        sourceClone.setRegion(intersection)\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        sourceRegion.set(sourceClone)\n\n        return pos\n    }\n\n}\n\nmodule.exports = ALIGN_TO_NORMALIZED"
        }
      ],
      "filteredModules": 0,
      "origins": [
        {
          "moduleId": 0,
          "module": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "moduleName": "./src/index.jsx",
          "loc": "",
          "name": "main",
          "reasons": []
        }
      ]
    }
  ],
  "modules": [
    {
      "id": 0,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "name": "./src/index.jsx",
      "size": 15445,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "profile": {
        "factory": 16,
        "building": 220
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React    = require('react')\nvar assign   = require('object-assign')\nvar LoadMask = require('react-load-mask')\nvar Region   = require('region')\n\nvar Column = require('./models/Column')\n\nvar PropTypes      = require('./PropTypes')\nvar Wrapper        = require('./Wrapper')\nvar Header         = require('./Header')\nvar WrapperFactory = React.createFactory(Wrapper)\nvar HeaderFactory  = React.createFactory(Header)\n\nvar findIndexByName = require('./utils/findIndexByName')\nvar group           = require('./utils/group')\n\nvar slice          = require('./render/slice')\nvar renderTable    = require('./render/renderTable')\nvar getGroupedRows = require('./render/getGroupedRows')\n\nfunction emptyFn(){}\n\nfunction getVisibleCount(columns){\n    return columns.filter(function(c)  {return c.visible;}).length\n}\n\nfunction findColumn(columns, column){\n\n    var name = typeof column === 'string'? column: column.name\n    var index = findIndexByName(columns, name)\n\n    if (~index){\n        return columns[index]\n    }\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid',\n\n    mixins: [\n        require('./RowSelect'),\n        require('./ColumnFilter')\n    ],\n\n    propTypes: {\n        loading          : React.PropTypes.bool,\n        virtualRendering : React.PropTypes.bool,\n\n        //specify false if you don't want any column to be resizable\n        resizableColumns : React.PropTypes.bool,\n        filterableColumns: React.PropTypes.bool,\n\n        //specify false if you don't want column menus to be displayed\n        withColumnMenu   : React.PropTypes.bool,\n        cellEllipsis     : React.PropTypes.bool,\n        sortable         : React.PropTypes.bool,\n        idProperty       : React.PropTypes.string.isRequired,\n\n        //you can customize the column menu by specifying a factory\n        columnMenuFactory: React.PropTypes.func,\n\n        /**\n         * @cfg {Number/String} columnMinWidth=50\n         */\n        columnMinWidth   : PropTypes.numeric,\n        scrollBy         : PropTypes.numeric,\n        rowHeight        : PropTypes.numeric,\n        sortInfo         : PropTypes.sortInfo,\n        columns          : PropTypes.column\n    },\n\n    getDefaultProps: require('./getDefaultProps'),\n\n    componentDidMount: function(){\n        window.addEventListener('click', this.windowClickListener = this.onWindowClick)\n    },\n\n    componentWillUnmount: function(){\n        window.removeEventListener('click', this.windowClickListener)\n    },\n\n    onWindowClick: function(event){\n        if (this.state.menu){\n            this.setState({\n                menuColumn: null,\n                menu      : null\n            })\n        }\n    },\n\n    getInitialState: function(){\n\n        var props = this.props\n        var defaultSelected = props.defaultSelected\n\n        return {\n            scrollLeft: 0,\n            scrollTop : 0,\n            renderStartIndex: 0,\n            menuColumn: null,\n            defaultSelected: defaultSelected\n        }\n    },\n\n    handleScrollLeft: function(scrollLeft){\n        this.setState({\n            scrollLeft: scrollLeft,\n            menuColumn: null\n        })\n    },\n\n    handleScrollTop: function(scrollTop){\n        var state = {\n            menuColumn: null\n        }\n\n        if (this.props.virtualRendering){\n            state.renderStartIndex = Math.ceil(scrollTop / this.props.rowHeight)\n        } else {\n            state.scrollTop = scrollTop\n        }\n\n        this.setState(state)\n    },\n\n    getRenderEndIndex: function(props, state){\n        var startIndex = state.renderStartIndex\n        var rowCount   = props.rowCountBuffer\n        var length     = props.data.length\n\n        if (state.groupData){\n            length += state.groupData.groupsCount\n        }\n\n        if (!rowCount){\n            var maxHeight\n            if (props.style && typeof props.style.height === 'number'){\n                maxHeight = props.style.height\n            } else {\n                maxHeight = window.screen.height\n            }\n            rowCount = Math.floor(maxHeight / props.rowHeight)\n        }\n\n        var endIndex = startIndex + rowCount\n\n        if (endIndex > length - 1){\n            endIndex = length\n        }\n\n        return endIndex\n    },\n\n    onDropColumn: function(index, dropIndex){\n        ;(this.props.onColumnOrderChange || emptyFn)(index, dropIndex)\n    },\n\n    toggleColumn: function(props, column){\n\n        var visible = column.visible\n\n        column = findColumn(this.props.columns, column)\n\n        if (visible && getVisibleCount(props.columns) === 1){\n            return\n        }\n\n        var onHide  = this.props.onColumnHide || emptyFn\n        var onShow  = this.props.onColumnShow || emptyFn\n\n        visible?\n            onHide(column):\n            onShow(column)\n\n        var onChange = this.props.onColumnVisibilityChange || emptyFn\n\n        onChange(column, !visible)\n\n        if (column.defaultVisible != null){\n            //stateful behaviour\n            column.defaultVisible = !visible\n            this.setState({})\n        }\n    },\n\n    showMenu: function(menu, state){\n\n        state = state || {}\n        state.menu = menu\n\n        if (this.state.menu){\n            this.setState({\n                menu: null,\n                menuColumn: null\n            })\n        }\n\n        setTimeout(function(){\n            //since menu is hidden on click on window,\n            //show it in a timeout, after the click event has reached the window\n            this.setState(state)\n        }.bind(this), 0)\n    },\n\n    prepareHeader: function(props, state){\n\n        var allColumns = props.columns\n        var columns    = props.columns.filter(function(c)  {return c.visible;})\n\n        return (props.headerFactory || HeaderFactory)({\n            scrollLeft       : state.scrollLeft,\n            resizing         : state.resizing,\n            columns          : columns,\n            allColumns       : allColumns,\n            cellPadding      : props.cellPadding,\n            scrollbarSize    : props.scrollbarSize,\n            sortInfo         : props.sortInfo,\n            resizableColumns : props.resizableColumns,\n            filterableColumns: props.filterableColumns,\n            withColumnMenu   : props.withColumnMenu,\n            sortable         : props.sortable,\n\n            onDropColumn     : this.onDropColumn,\n            onSortChange     : props.onSortChange,\n            onColumnResizeDragStart: this.onColumnResizeDragStart,\n            onColumnResizeDrag: this.onColumnResizeDrag,\n            onColumnResizeDrop: this.onColumnResizeDrop,\n\n            toggleColumn     : this.toggleColumn.bind(this, props),\n            showMenu         : this.showMenu,\n            filterMenuFactory : this.filterMenuFactory,\n            menuColumn       : state.menuColumn,\n            columnMenuFactory: props.columnMenuFactory\n\n        })\n    },\n\n    prepareFooter: function(props, state){\n        return (props.footerFactory || React.DOM.div)({\n            className: 'z-footer-wrapper'\n        })\n    },\n\n    prepareRenderProps: function(props){\n\n        var result = {}\n        var list = {\n            className: true,\n            style: true\n        }\n\n        Object.keys(props).forEach(function(name){\n            // if (list[name] || name.indexOf('data-') == 0 || name.indexOf('on') === 0){\n            if (list[name]){\n                result[name] = props[name]\n            }\n        })\n\n        return result\n    },\n\n    render: function(){\n        var props = this.prepareProps(this.props)\n\n        var header      = this.prepareHeader(props, this.state)\n        var wrapper     = this.prepareWrapper(props, this.state)\n        var footer      = this.prepareFooter(props, this.state)\n        var resizeProxy = this.prepareResizeProxy(props, this.state)\n\n        var renderProps = this.prepareRenderProps(props)\n\n        return (\n            React.createElement(\"div\", React.__spread({},  renderProps), \n                React.createElement(\"div\", {className: \"z-inner\"}, \n                    header, \n                    wrapper, \n                    footer\n                ), \n\n                React.createElement(LoadMask, {visible: props.loading}), \n                resizeProxy\n            )\n        )\n    },\n\n    renderTable: function(props, state){\n        var table\n        var rows\n\n        if (props.groupBy){\n            rows = this.groupedRows = this.groupedRows || getGroupedRows(props, state.groupData)\n            rows = slice(rows, props)\n        }\n\n        table = renderTable.call(this, props, rows)\n\n        return table\n    },\n\n    prepareWrapper: function(props, state){\n        var virtualRendering = props.virtualRendering\n\n        var data       = props.data\n        var scrollTop  = state.scrollTop\n        var startIndex = state.renderStartIndex\n        var endIndex   = virtualRendering?\n                            this.getRenderEndIndex(props, state):\n                            0\n\n        var renderCount = virtualRendering?\n                            endIndex + 1 - startIndex:\n                            data.length\n\n        if (props.virtualRendering){\n            scrollTop = startIndex * props.rowHeight\n        }\n\n        var wrapperProps = assign({\n            scrollLeft      : state.scrollLeft,\n            scrollTop       : scrollTop,\n            startIndex      : startIndex,\n            totalLength     : data.length,\n            renderCount     : renderCount,\n            endIndex        : endIndex,\n\n            allColumns      : props.columns,\n\n            onScrollLeft    : this.handleScrollLeft,\n            onScrollTop     : this.handleScrollTop,\n\n            menu            : state.menu,\n            menuColumn      : state.menuColumn,\n            showMenu        : this.showMenu,\n\n            cellFactory     : props.cellFactory,\n            rowStyle        : props.rowStyle,\n            rowClassName    : props.rowClassName,\n            rowContextMenu  : props.rowContextMenu,\n\n            onRowClick: this.handleRowClick,\n            selected        : props.selected == null?\n                                    state.defaultSelected:\n                                    props.selected\n        }, props)\n\n        wrapperProps.columns = props.columns.filter(function(c)  {return c.visible;})\n        wrapperProps.table   = this.renderTable(wrapperProps, state)\n\n        return (props.WrapperFactory || WrapperFactory)(wrapperProps)\n\n    },\n\n    handleRowClick: function(rowProps, event){\n        if (this.props.onRowClick){\n            this.props.onRowClick(rowProps.data, rowProps, event)\n        }\n\n        this.handleSelection(rowProps, event)\n    },\n\n    prepareProps: function(thisProps){\n        var props = assign({}, thisProps)\n\n        this.prepareClassName(props)\n        props.style = this.prepareStyle(props)\n\n        this.prepareColumns(props)\n        // this.groupData(props)\n\n        return props\n    },\n\n    groupData: function(props){\n        if (props.groupBy){\n\n            this.setState({\n                groupData: group(props.data, props.groupBy)\n            })\n        }\n\n        delete this.groupedRows\n    },\n\n    componentWillMount: function(){\n        this.groupData(this.props)\n    },\n\n    componentWillReceiveProps: function(nextProps){\n        this.groupData(nextProps)\n    },\n\n    prepareStyle: function(props){\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        return style\n    },\n\n    prepareClassName: function(props){\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        if (props.cellEllipsis){\n            props.className += ' ' + props.cellEllipsisCls\n        }\n\n        if (props.styleAlternateRows){\n            props.className += ' ' + props.styleAlternateRowsCls\n        }\n\n        if (props.showCellBorders){\n            var cellBordersCls = props.showCellBorders === true?\n                                    props.showCellBordersCls + '-horizontal ' + props.showCellBordersCls + '-vertical':\n                                    props.showCellBordersCls + '-' + props.showCellBorders\n\n            props.className += ' ' + cellBordersCls\n\n        }\n\n        if (props.withColumnMenu){\n            props.className += ' ' + props.withColumnMenuCls\n        }\n    },\n\n    ///////////////////////////////////////\n    ///\n    /// Code dealing with preparing columns\n    ///\n    ///////////////////////////////////////\n    prepareColumns: function(props){\n        props.columns = props.columns.map(function(c)  {return Column(c, props);})\n\n        this.prepareColumnSizes(props)\n\n        props.columns.forEach(this.prepareColumnStyle.bind(this, props))\n    },\n\n    prepareColumnStyle: function(props, column){\n        var style    = column.style = {}\n        var minWidth = column.minWidth || props.columnMinWidth\n\n        style.minWidth = minWidth\n\n        if (column.flexible){\n            style.flex = column.flex || 1\n        } else {\n            style.width    = column.width\n            style.minWidth = column.width\n        }\n    },\n\n    prepareColumnSizes: function(props){\n\n        var visibleColumns = props.columns.filter(function(c)  {return c.visible;})\n        var totalWidth     = 0\n        var flexCount      = 0\n\n        visibleColumns.forEach(function(column){\n            column.minWidth = column.minWidth || props.columnMinWidth\n\n            if (!column.flexible){\n                totalWidth += column.width\n                return 0\n            } else if (column.minWidth){\n                totalWidth += column.minWidth\n            }\n\n            flexCount++\n        }, this)\n\n        props.columnFlexCount  = flexCount\n        props.totalColumnWidth = totalWidth\n    },\n\n    prepareResizeProxy: function(props, state){\n\n        var style = {}\n\n        if (state.resizing){\n            style.display = 'block'\n            style.left = state.resizeProxyLeft\n        }\n\n        return React.createElement(\"div\", {className: \"z-resize-proxy\", style: style})\n    },\n\n    onColumnResizeDragStart: function(config){\n\n        var domNode = this.getDOMNode()\n        var region  = Region.from(domNode)\n        var state = config\n\n        state.resizeProxyOffset = state.resizeProxyLeft - region.left\n        state.resizeProxyLeft = state.resizeProxyOffset\n\n        this.setState(state)\n    },\n\n    onColumnResizeDrag: function(config){\n        var resizeProxyOffset = this.state.resizeProxyOffset\n\n        config.resizeProxyLeft = resizeProxyOffset + config.resizeProxyDiff\n\n        this.setState(config)\n    },\n\n    onColumnResizeDrop: function(config, resizeInfo){\n\n        var props   = this.props\n        var columns = props.columns\n\n        var onColumnResize = props.onColumnResize || emptyFn\n        var first = resizeInfo[0]\n\n        var firstCol  = findColumn(columns, first.name)\n        var firstSize = first.size\n\n        var second = resizeInfo[1]\n        var secondCol = second? findColumn(columns, second.name): undefined\n        var secondSize = second? second.size: undefined\n\n        //if defaultWidth specified, update it\n        if (firstCol.width == null && firstCol.defaultWidth){\n            firstCol.defaultWidth = firstSize\n        }\n\n        if (secondCol && secondCol.width == null && secondCol.defaultWidth){\n            secondCol.defaultWidth = secondSize\n        }\n\n        this.setState(config)\n\n        onColumnResize(firstCol, firstSize, secondCol, secondSize)\n    }\n})"
    },
    {
      "id": 1,
      "identifier": "external \"React\"",
      "name": "external \"React\"",
      "size": 42,
      "cacheable": false,
      "built": false,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 0,
        "building": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:15-31"
        },
        {
          "moduleId": 7,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "module": "./src/render/renderTable.jsx",
          "moduleName": "./src/render/renderTable.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:12-28"
        },
        {
          "moduleId": 8,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "module": "./src/render/getGroupedRows.jsx",
          "moduleName": "./src/render/getGroupedRows.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:12-28"
        },
        {
          "moduleId": 12,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
          "module": "./src/Wrapper/index.jsx",
          "moduleName": "./src/Wrapper/index.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:14-30"
        },
        {
          "moduleId": 16,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:18-34"
        },
        {
          "moduleId": 26,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
          "module": "./src/Cell/index.jsx",
          "moduleName": "./src/Cell/index.jsx",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 46,
          "moduleIdentifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
          "module": "../react-load-mask/lib/Loader.js",
          "moduleName": "../react-load-mask/lib/Loader.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "5:17-33"
        },
        {
          "moduleId": 69,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
          "module": "../react-menus/lib/MenuItemCell.js",
          "moduleName": "../react-menus/lib/MenuItemCell.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 70,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
          "module": "../react-menus/lib/MenuSeparator.js",
          "moduleName": "../react-menus/lib/MenuSeparator.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 106,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
          "module": "../react-menus/lib/renderChildren.js",
          "moduleName": "../react-menus/lib/renderChildren.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:12-28"
        },
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:13-29"
        },
        {
          "moduleId": 108,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/propTypes.js",
          "module": "../react-menus/lib/propTypes.js",
          "moduleName": "../react-menus/lib/propTypes.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:12-28"
        },
        {
          "moduleId": 119,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
          "module": "../react-menus/lib/Scroller.js",
          "moduleName": "../react-menus/lib/Scroller.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "3:20-36"
        },
        {
          "moduleId": 123,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/react-clonewithprops/index.js",
          "module": "../react-menus/~/react-clonewithprops/index.js",
          "moduleName": "../react-menus/~/react-clonewithprops/index.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "2:15-31"
        }
      ]
    },
    {
      "id": 2,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
      "name": "./src/models/Column.js",
      "size": 2005,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 30,
        "building": 26,
        "dependencies": 275
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./models/Column",
          "loc": "8:13-39"
        }
      ],
      "source": "'use strict';\n\nvar humanize = require('ustring').humanize\nvar assign   = require('object-assign')\n\nfunction getVisibleInfo(col){\n    var visible = true\n    var defaultVisible\n\n    if (col.hidden != null){\n        visible = !col.hidden\n    } else if (col.visible != null){\n        visible = !!col.visible\n    } else {\n        //no visible or hidden specified\n        //so we look for defaultVisible/defaultHidden\n\n        if (col.defaultHidden != null){\n            defaultVisible = !col.defaultHidden\n        } else if (col.defaultVisible != null){\n            defaultVisible = !!col.defaultVisible\n        }\n\n        if (defaultVisible != null){\n            visible = defaultVisible\n        }\n    }\n\n    return {\n        visible: visible,\n        defaultVisible: defaultVisible\n    }\n}\n\nvar Column = function(col, props){\n\n    col = assign({}, Column.defaults, col)\n\n    //title\n    if (!col.title){\n        col.title = humanize(col.name)\n    }\n\n    //sortable\n    if (props && !props.sortable){\n        col.sortable = false\n    }\n    col.sortable = !!col.sortable\n\n    //resizable\n    if (props && props.resizableColumns === false){\n        col.resizable = false\n    }\n    col.resizable = !!col.resizable\n\n    //filterable\n    if (props && props.filterableColumns === false){\n        col.filterable = false\n    }\n    col.filterable = !!col.filterable\n\n    var visibleInfo = getVisibleInfo(col)\n    var visible = visibleInfo.visible\n\n    if (visibleInfo.defaultVisible != null){\n        col.defaultHidden  = !visibleInfo.defaultVisible\n        col.defaultVisible = visibleInfo.defaultVisible\n    }\n\n    //hidden\n    col.hidden = !visible\n    //visible\n    col.visible  = visible\n\n    if (col.width == null && col.defaultWidth){\n        col.width = col.defaultWidth\n    }\n\n    //flexible\n    col.flexible = !col.width\n\n    return col\n}\n\nColumn.displayName = 'Column'\n\nColumn.defaults = {\n    sortable  : true,\n    filterable: true,\n    resizable : true,\n    type      : 'string'\n}\n\nmodule.exports = Column"
    },
    {
      "id": 3,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/PropTypes.js",
      "name": "./src/PropTypes.js",
      "size": 1104,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 31,
        "building": 35
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./PropTypes",
          "loc": "10:21-43"
        }
      ],
      "source": "'use strict';\n\nfunction val(fn){\n\n    return function(props, propName){\n\n        return fn(props[propName], propName, props)\n    }\n}\n\nmodule.exports = {\n    numeric: val(function(value, propName){\n\n        if (value == null){\n            return\n        }\n        if (value * 1 != value){\n            return new Error('Invalid numeric value for ' + propName)\n        }\n    }),\n\n    sortInfo: val(function(value){\n        if (typeof value == 'string' || typeof value == 'number'){\n            return new Error('Invalid sortInfo specified')\n        }\n    }),\n\n    column: val(function(value, props, propName){\n\n        if (!value){\n            return new Error('No columns specified. Please specify at least one column!')\n        }\n\n        if (!Array.isArray(value)){\n            value = props[propName] = [value]\n        }\n\n        var err\n\n        value.some(function(col, index){\n            if (!col.name){\n                err = new Error('All grid columns must have a name! Column at index ' + index + ' has no name!')\n                return true\n            }\n        })\n\n        return err\n\n    })\n}"
    },
    {
      "id": 4,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexByName.js",
      "name": "./src/utils/findIndexByName.js",
      "size": 215,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 33,
        "building": 34,
        "dependencies": 276
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./utils/findIndexByName",
          "loc": "16:22-56"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "../utils/findIndexByName",
          "loc": "10:22-57"
        },
        {
          "moduleId": 24,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
          "module": "./src/Header/setupColumnResize.js",
          "moduleName": "./src/Header/setupColumnResize.js",
          "type": "cjs require",
          "userRequest": "../utils/findIndexByName",
          "loc": "6:22-57"
        }
      ],
      "source": "'use strict';\n\nvar findIndexBy =require('./findIndexBy')\n\nfunction findIndexByName(arr, name){\n    return findIndexBy(arr, function(info){\n        return info.name === name\n    })\n}\n\nmodule.exports = findIndexByName"
    },
    {
      "id": 5,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
      "name": "./src/utils/group.js",
      "size": 2560,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 34,
        "building": 57
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./utils/group",
          "loc": "17:22-46"
        }
      ],
      "source": "'use strict';\n\nvar hasown = require('hasown')\n\nfunction copyIf(source, target){\n    var hasOwn = hasown(target)\n\n    Object.keys(source).forEach(function(key){\n        if (!hasOwn(key)){\n            target[key] = source[key]\n        }\n    })\n}\n\nfunction groupByFields(data, fields, path, names, fieldIndex){\n    data       = data       || []\n    fieldIndex = fieldIndex || 0\n\n    var field = fields[fieldIndex]\n\n    if (!field){\n        return data\n    }\n\n    var group     = groupArrayByField(data, field)\n    var fieldName = typeof field == 'string'?\n                            field:\n                            field.name\n\n    if (!fieldIndex){\n        group.namePath  = []\n        group.valuePath = []\n        group.depth     = 0\n        delete group.name\n    }\n\n    var groupsCount = group.length\n\n    if (group.keys && group.keys.length){\n\n        group.leaf = false\n        group.keys.forEach(function(key){\n\n            var groupPath  = (path || []).concat(key)\n            var fieldNames = (names || []).concat(fieldName)\n            var data = groupByFields(group.data[key], fields, groupPath, fieldNames, fieldIndex + 1)\n\n            if (Array.isArray(data)){\n                data = {\n                    data: data,\n                    leaf: true\n                }\n            }\n\n            data.name      = fieldName\n            data.value     = key\n            data.valuePath = groupPath\n            data.namePath  = fieldNames\n            data.depth     = fieldIndex + 1\n\n            if (typeof field != 'string'){\n\n                copyIf(field, data)\n            }\n\n            group.data[key] = data\n\n            if (!data.leaf){\n                groupsCount += data.groupsCount\n            }\n\n        })\n    }\n\n    if (!group.leaf){\n        group.groupsCount = groupsCount\n    }\n\n    return group\n}\n\nfunction groupArrayByField(data, field){\n\n    var groupKeys      = {}\n    var groupKeysArray = []\n\n    var fieldName      = typeof field == 'string'?\n                            field:\n                            field.name\n\n    ;(data || []).forEach(function(item){\n        var itemKey = item[fieldName]\n\n        if (groupKeys[itemKey]){\n            groupKeys[itemKey].push(item)\n        } else {\n            groupKeys[itemKey] = [item]\n            groupKeysArray.push(itemKey)\n        }\n    })\n\n    var result = {\n        keys      : groupKeysArray,\n        data      : groupKeys,\n        childName : fieldName,\n        length    : groupKeysArray.length,\n        leaf      : true\n    }\n\n    return result\n}\n\nmodule.exports = groupByFields"
    },
    {
      "id": 6,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/render/slice.js",
      "name": "./src/render/slice.js",
      "size": 243,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 34,
        "building": 60
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./render/slice",
          "loc": "19:21-46"
        },
        {
          "moduleId": 7,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "module": "./src/render/renderTable.jsx",
          "moduleName": "./src/render/renderTable.jsx",
          "type": "cjs require",
          "userRequest": "./slice",
          "loc": "7:13-31"
        }
      ],
      "source": "'use strict';\n\nfunction slice(data, props){\n\n    if (!props.virtualRendering){\n        return data\n    }\n\n    return data.slice(\n            props.startIndex,\n            props.startIndex + props.renderCount\n        )\n}\n\nmodule.exports = slice"
    },
    {
      "id": 7,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
      "name": "./src/render/renderTable.jsx",
      "size": 695,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 33,
        "building": 64,
        "dependencies": 216
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./render/renderTable",
          "loc": "20:21-52"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React = require('react')\nvar renderMenu = require('./renderMenu')\nvar renderRow  = require('./renderRow')\nvar tableStyle  = require('./tableStyle')\nvar slice  = require('./slice')\n\nfunction getData(props){\n\n    if (!props.virtualRendering){\n        return props.data\n    }\n\n    return slice(props.data, props)\n}\n\nmodule.exports = function(props, rows){\n\n    rows = rows || getData(props).map(function(data, index){\n        return renderRow.call(this, props, data, index + props.startIndex)\n    }, this)\n\n    return React.createElement(\"div\", {ref: \"table\", className: \"z-table\", style: tableStyle(props)}, \n        rows, \n        renderMenu(props)\n    )\n}"
    },
    {
      "id": 8,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
      "name": "./src/render/getGroupedRows.jsx",
      "size": 2115,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 34,
        "building": 86,
        "dependencies": 214
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./render/getGroupedRows",
          "loc": "21:21-55"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React = require('react')\n\nvar Row         = require('../Row')\nvar Cell        = require('../Cell')\nvar CellFactory = React.createFactory(Cell)\n\nvar renderRow = require('./renderRow')\n\nfunction renderData(props, data, depth){\n\n    return data.map(function(data, index){\n\n        return renderRow(props, data, index, function(config){\n            config.cellFactory = function(cellProps){\n                if (cellProps.index === 0){\n                    cellProps.innerStyle = {\n                        paddingLeft: depth * props.groupNestingWidth\n                    }\n                }\n\n                return CellFactory(cellProps)\n            }\n\n            config.className += ' z-grouped'\n\n            return config\n        })\n    })\n}\n\nfunction renderGroupRow(props, groupData){\n\n    var style = {\n        paddingLeft: (groupData.depth - 1)* props.groupNestingWidth\n    }\n\n    var cellStyle = {\n        minWidth: props.totalColumnWidth,\n        maxWidth: props.totalColumnWidth\n    }\n\n    return React.createElement(Row, {className: \"z-group-row\", key: 'group-'+groupData.valuePath, rowHeight: props.rowHeight}, \n        React.createElement(Cell, {\n            className: \"z-group-cell\", \n            textPadding: props.cellPadding, \n            innerStyle: style, \n            text: groupData.value, \n            style: cellStyle}\n        )\n    )\n}\n\nfunction renderGroup(props, groupData){\n\n    var result = [renderGroupRow(props, groupData)]\n\n    if (groupData && groupData.leaf){\n        result.push.apply(result, renderData(props, groupData.data, groupData.depth))\n    } else {\n        groupData.keys.forEach(function(key){\n            var items = renderGroup(props, groupData.data[key])\n            result.push.apply(result, items)\n        })\n    }\n\n    return result\n}\n\nfunction renderGroups(props, groupsData){\n    var result = []\n\n    groupsData.keys.map(function(key){\n        result.push.apply(result, renderGroup(props, groupsData.data[key]))\n    })\n\n    return result\n}\n\nmodule.exports = function(props, groupData){\n    return renderGroups(props, groupData)\n}"
    },
    {
      "id": 9,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
      "name": "./src/RowSelect.js",
      "size": 6038,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 34,
        "building": 131,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./RowSelect",
          "loc": "44:8-30"
        }
      ],
      "source": "'use strict';\n\nvar assign = require('object-assign')\nvar getSelected = require('./getSelected')\n\nvar hasOwn = function(obj, prop){\n    return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\n/**\n * Here is how multi selection is implemented - trying to emulate behavior in OSX Finder\n *\n * When there is no selection, and an initial click for selection is done, keep that index (SELINDEX)\n *\n * Next, if we shift+click, we mark as selected the items from initial index to current click index.\n *\n * Now, if we ctrl+click elsewhere, keep the selection, but also add the selected file,\n * and set SELINDEX to the new index. Now on any subsequent clicks, have the same behavior,\n * selecting/deselecting items starting from SELINDEX to the new click index\n */\n\n\nmodule.exports = {\n\n    findInitialSelectionIndex: function(){\n        var selected = getSelected(this.props, this.state)\n        var index = undefined\n\n        if (!Object.keys(selected).length){\n            return index\n        }\n\n\n        var i = 0\n        var data = this.props.data\n        var len = data.length\n        var id\n        var idProperty = this.props.idProperty\n\n        for (; i < len; i++){\n            id = data[i][idProperty]\n\n            if (selected[id]){\n                index = i\n            }\n        }\n\n        return index\n    },\n\n    notifySelection: function(selected, data){\n        if (typeof this.props.onSelectionChange == 'function'){\n            this.props.onSelectionChange(selected, data)\n        }\n\n        if (!hasOwn(this.props, 'selected')){\n            this.setState({\n                defaultSelected: selected\n            })\n        }\n    },\n\n    handleSingleSelection: function(data, event){\n        var props = this.props\n\n        var rowSelected = this.isRowSelected(data)\n        var newSelected = !rowSelected\n\n        if (rowSelected && event && !event.ctrlKey){\n            //if already selected and not ctrl, keep selected\n            newSelected = true\n        }\n\n        var selectedId = newSelected?\n                            data[props.idProperty]:\n                            null\n\n        this.notifySelection(selectedId, data)\n    },\n\n\n    handleMultiSelection: function(data, event, config){\n\n        var selIndex = config.selIndex\n        var prevShiftKeyIndex = config.prevShiftKeyIndex\n\n        var props = this.props\n        var map   = selIndex == null?\n                        {}:\n                        assign({}, getSelected(props, this.state))\n\n        if (prevShiftKeyIndex != null && selIndex != null){\n            var min = Math.min(prevShiftKeyIndex, selIndex)\n            var max = Math.max(prevShiftKeyIndex, selIndex)\n\n            var removeArray = props.data.slice(min, max + 1) || []\n\n            removeArray.forEach(function(item){\n                if (item){\n                    var id = item[props.idProperty]\n                    delete map[id]\n                }\n            })\n        }\n\n        data.forEach(function(item){\n            if (item){\n                var id = item[props.idProperty]\n                map[id] = item\n            }\n        })\n\n        this.notifySelection(map, data)\n    },\n\n    handleMultiSelectionRowToggle: function(data, event){\n\n        var selected   = getSelected(this.props, this.state)\n        var isSelected = this.isRowSelected(data)\n\n        var clone = assign({}, selected)\n        var id    = data[this.props.idProperty]\n\n        if (isSelected){\n            delete clone[id]\n        } else {\n            clone[id] = data\n        }\n\n        this.notifySelection(clone, data)\n\n        return isSelected\n    },\n\n    handleSelection: function(rowProps, event){\n\n        var props = this.props\n\n        if (!hasOwn(props, 'selected') && !hasOwn(props, 'defaultSelected')){\n            return\n        }\n\n        var isSelected  = this.isRowSelected(rowProps.data)\n        var multiSelect = this.isMultiSelect()\n\n        if (!multiSelect){\n            this.handleSingleSelection(rowProps.data, event)\n            return\n        }\n\n        if (this.selIndex === undefined){\n            this.selIndex = this.findInitialSelectionIndex()\n        }\n\n        var selIndex = this.selIndex\n\n        //multi selection\n        var index = rowProps.index\n        var prevShiftKeyIndex = this.shiftKeyIndex\n        var start\n        var end\n        var data\n\n        if (event.ctrlKey){\n            this.selIndex = index\n            this.shiftKeyIndex = null\n\n            var unselect = this.handleMultiSelectionRowToggle(props.data[index], event)\n\n            if (unselect){\n                this.selIndex++\n                this.shiftKeyIndex = prevShiftKeyIndex\n            }\n\n            return\n        }\n\n        if (!event.shiftKey){\n            //set selIndex, for future use\n            this.selIndex = index\n            this.shiftKeyIndex = null\n\n            //should not select many, so make selIndex null\n            selIndex = null\n        } else {\n            this.shiftKeyIndex = index\n        }\n\n        if (selIndex == null){\n            data = [props.data[index]]\n        } else {\n            start = Math.min(index, selIndex)\n            end   = Math.max(index, selIndex) + 1\n            data  = props.data.slice(start, end)\n        }\n\n        this.handleMultiSelection(data, event, {\n            selIndex: selIndex,\n            prevShiftKeyIndex: prevShiftKeyIndex\n        })\n    },\n\n\n    isRowSelected: function(data){\n        var selectedMap = this.getSelectedMap()\n        var id          = data[this.props.idProperty]\n\n        return selectedMap[id]\n    },\n\n    isMultiSelect: function(){\n        var selected = getSelected(this.props, this.state)\n\n        return selected && typeof selected == 'object'\n    },\n\n    getSelectedMap: function(){\n        var selected    = getSelected(this.props, this.state)\n        var multiSelect = selected && typeof selected == 'object'\n        var map\n\n        if (multiSelect){\n            map = selected\n        } else {\n            map = {}\n            map[selected] = true\n        }\n\n        return map\n    }\n}"
    },
    {
      "id": 10,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
      "name": "./src/ColumnFilter.js",
      "size": 4488,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 35,
        "building": 161,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./ColumnFilter",
          "loc": "45:8-33"
        }
      ],
      "source": "'use strict';\n\nvar assign = require('object-assign')\nvar ReactMenu = require('react-menus')\n\nfunction stopPropagation(event){\n    event.stopPropagation()\n}\n\nfunction emptyFn(){}\n\nvar FILTER_FIELDS = {}\n\nmodule.exports = {\n\n    getColumnFilterFieldFactory: function(column){\n\n        var type = column.type || 'string'\n\n        return FILTER_FIELDS[type] || React.DOM.input\n    },\n\n    getFilterField: function(props){\n        var column = props.column\n        var filterValue = this.filterValues?\n                            this.filterValues[column.name]:\n                            ''\n\n        var fieldProps = {\n            autoFocus   : true,\n            defaultValue: filterValue,\n            column      : column,\n            onChange    : this.onFilterChange.bind(this, column),\n            onKeyUp     : this.onFilterKeyUp.bind(this, column)\n        }\n\n        var fieldFactory = column.renderFilterField || this.props.renderFilterField\n        var field\n\n        if (fieldFactory){\n            field = fieldFactory(fieldProps)\n        }\n\n        if (field === undefined){\n            field = this.getColumnFilterFieldFactory(column)(fieldProps)\n        }\n\n        return field\n    },\n\n    onFilterKeyUp: function(column, event){\n        if (event.key == 'Enter'){\n            this.onFilterClick(column, event)\n        }\n    },\n\n    onFilterChange: function(column, eventOrValue){\n\n        var value = eventOrValue\n\n        if (eventOrValue && eventOrValue.target){\n            value = eventOrValue.target.value\n        }\n\n        this.filterValues = this.filterValues || {}\n        this.filterValues[column.name] = value\n\n        if (this.props.liveFilter){\n            this.filterBy(column, value)\n        }\n    },\n\n    filterBy: function(column, value, event){\n        ;(this.props.onFilter || emptyFn)(column, value, this.filterValues, event)\n    },\n\n    onFilterClick: function(column, event){\n        this.showMenu(null)\n\n        var value = this.filterValues? this.filterValues[column.name]: ''\n\n        this.filterBy(column, value, event)\n    },\n\n    onFilterClear: function(column){\n        this.showMenu(null)\n\n        if (this.filterValues){\n            this.filterValues[column.name] = ''\n        }\n\n        this.filterBy(column, '')\n\n        ;(this.props.onClearFilter || emptyFn).apply(null, arguments)\n    },\n\n    getFilterButtons: function(props){\n\n        var column = props.column\n        var factory = column.renderFilterButtons || this.props.renderFilterButtons\n\n        var result\n\n        if (factory){\n            result = factory(props)\n        }\n\n        if (result !== undefined){\n            return result\n        }\n\n        var doFilter = this.onFilterClick.bind(this, column)\n        var doClear = this.onFilterClear.bind(this, column)\n\n        return React.createElement(\"div\", {style: {textAlign: 'center'}}, \n            React.createElement(\"button\", {onClick: doFilter}, \"Filter\"), \n            React.createElement(\"button\", {onClick: doClear, style: {marginLeft: 5}}, \"Clear\")\n        )\n    },\n\n    filterMenuFactory: function(props){\n\n        var overStyle = {\n            background: 'white'\n        }\n\n        var column  = props.column\n        var field   = this.getFilterField(props)\n        var buttons = this.getFilterButtons({\n            column: column\n        })\n\n        var children = [\n            field,\n            buttons\n        ].map(function(x, index){\n            return React.createElement(ReactMenu.Item, {key: index}, \n                React.createElement(ReactMenu.Item.Cell, null, \n                    x\n                )\n            )\n        })\n\n        props.itemOverStyle   = props.itemOverStyle || overStyle\n        props.itemActiveStyle = props.itemActiveStyle || overStyle\n        props.onClick = props.onClick || stopPropagation\n\n        var factory = this.props.filterMenuFactory\n        var result\n\n        if (factory){\n            result = factory(props)\n\n            if (result !== undefined){\n                return result\n            }\n        }\n\n        props.onMount = this.onFilterMenuMount\n\n        return React.createElement(ReactMenu, React.__spread({},  props), \n            children\n        )\n    },\n\n    onFilterMenuMount: function(menu){\n        var dom = menu.getDOMNode()\n\n        if (dom){\n            var input = dom.querySelector('input')\n\n            if (input){\n                setTimeout(function(){\n                    input.focus()\n                }, 10)\n            }\n        }\n    }\n}"
    },
    {
      "id": 11,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/getDefaultProps.js",
      "name": "./src/getDefaultProps.js",
      "size": 803,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 35,
        "building": 173
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./getDefaultProps",
          "loc": "75:21-49"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function(){\n    return {\n        loading: false,\n        columnMinWidth: 50,\n        cellPadding: 5,\n        scrollbarSize: 16,\n\n        scrollBy: undefined,\n        virtualRendering: true,\n\n        styleAlternateRowsCls: 'z-style-alternate',\n        withColumnMenuCls: 'z-with-column-menu',\n        cellEllipsisCls: 'z-cell-ellipsis',\n        defaultClassName: 'react-datagrid',\n\n        withColumnMenu: true,\n        sortable: true,\n        filterableColumns: true,\n        resizableColumns: true,\n\n        showCellBordersCls: 'z-cell-borders',\n        showCellBorders: false,\n        styleAlternateRows: true,\n        cellEllipsis: true,\n        rowHeight: 31,\n\n        groupNestingWidth: 20,\n\n        defaultStyle: {\n            position: 'relative'\n        }\n    }\n}"
    },
    {
      "id": 12,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
      "name": "./src/Wrapper/index.jsx",
      "size": 5423,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 38,
        "building": 199,
        "dependencies": 104
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./Wrapper",
          "loc": "11:21-41"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nfunction signum(x){\n    return x < 0? -1: 1\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Wrapper',\n\n    propTypes: {\n        scrollLeft      : React.PropTypes.number,\n        scrollTop       : React.PropTypes.number,\n        scrollbarSize   : React.PropTypes.number,\n        totalColumnWidth: React.PropTypes.number,\n        cellPadding     : React.PropTypes.number,\n        rowHeight       : React.PropTypes.any,\n\n        data            : React.PropTypes.array,\n        columns         : React.PropTypes.array,\n        idProperty      : React.PropTypes.string.isRequired,\n\n        rowFactory      : React.PropTypes.func\n    },\n\n    getDefaultProps: function(){\n\n        return {\n            scrollLeft: 0,\n            scrollTop : 0\n        }\n    },\n\n    syncVerticalScroller: function(){\n\n        var scrollTop = this.props.scrollTop\n\n        this.refs.verticalScrollbar.getDOMNode().scrollTop = scrollTop\n    },\n\n    render: function() {\n\n        var props     = this.prepareProps(this.props)\n        var rowsCount = props.renderCount\n\n        var groupsCount = 0\n        var table = props.table\n\n        if (props.groupData){\n            groupsCount = props.groupData.groupsCount\n        }\n\n        if (props.virtualRendering){\n            rowsCount += groupsCount\n        }\n\n        this.groupsCount = groupsCount\n\n        // console.log(props.renderCount)\n\n        var horizontalScrollerSize = props.totalColumnWidth + props.scrollbarSize\n        var verticalScrollerSize   = (props.totalLength + groupsCount) * props.rowHeight\n\n        return (\n            React.createElement(\"div\", {className: \"z-wrapper\", style: {height: rowsCount * props.rowHeight}}, \n                React.createElement(\"div\", {ref: \"tableWrapper\", className: \"z-table-wrapper\", style: {paddingRight: props.scrollbarSize}, onWheel: this.handleWheel}, \n                    table, \n                    React.createElement(\"div\", {ref: \"verticalScrollbar\", className: \"z-vertical-scrollbar\", style: {width: props.scrollbarSize}, onScroll: this.handleVerticalScroll}, \n                        React.createElement(\"div\", {className: \"z-vertical-scroller\", style: {height: verticalScrollerSize}})\n                    ), \n                    React.createElement(\"div\", {className: \"z-horizontal-scroller\", style: {width: horizontalScrollerSize}})\n                ), \n                React.createElement(\"div\", {ref: \"horizontalScrollbar\", className: \"z-horizontal-scrollbar\", onScroll: this.handleHorizontalScroll}, \n                    React.createElement(\"div\", {className: \"z-horizontal-scroller\", style: {width: horizontalScrollerSize}})\n                )\n            )\n        )\n    },\n\n    handleWheel: function(event){\n        event.stopPropagation()\n        event.preventDefault()\n\n        var delta = event.deltaY\n\n        if (delta && Math.abs(delta) < 40){\n            delta = signum(delta) * 40\n        }\n\n        if (event.shiftKey){\n\n            if (!delta){\n                delta = event.deltaX\n            }\n\n            var horizontalScrollbar = this.refs.horizontalScrollbar\n            horizontalScrollbar.getDOMNode().scrollLeft += delta\n            return\n        }\n\n        this.addMouseWheelDelta(delta)\n    },\n\n    getTableScrollHeight: function(){\n        var props  = this.props\n        var result = props.virtualRendering?\n                        (props.totalLength + this.groupsCount || 0) * props.rowHeight:\n                        this.refs.table.getDOMNode().offsetHeight\n\n        return result\n    },\n\n    addMouseWheelDelta: function(deltaY){\n        var props   = this.props\n        var virtual = props.virtualRendering\n\n        var tableHeight         = this.getTableScrollHeight()\n        var tableWrapper        = this.refs.tableWrapper.getDOMNode()\n        var horizontalScrollbar = this.refs.horizontalScrollbar.getDOMNode()\n        var wrapperHeight       = tableWrapper.offsetHeight - horizontalScrollbar.offsetHeight\n\n        var scrollTop = virtual?\n                            props.startIndex * props.rowHeight:\n                            props.scrollTop\n\n        if (virtual && deltaY < 0 && -deltaY < props.rowHeight){\n            //when scrolling to go up, account for the case where abs(deltaY)\n            //is less than the rowHeight, as this results in no scrolling\n            //so make sure it's at least deltaY\n            deltaY = -props.rowHeight\n        }\n\n        if (virtual && props.scrollBy){\n            deltaY = signum(deltaY) * props.scrollBy * props.rowHeight\n        }\n\n        scrollTop += deltaY\n\n        if (scrollTop + wrapperHeight > tableHeight){\n            scrollTop = tableHeight - wrapperHeight\n        }\n        if (scrollTop < 0){\n            scrollTop = 0\n        }\n\n        this.onVerticalScroll(scrollTop)\n\n        setTimeout(function(){\n            this.syncVerticalScroller()\n        }.bind(this), 0)\n    },\n\n\n    handleHorizontalScroll: function(event){\n        this.props.onScrollLeft(event.target.scrollLeft)\n    },\n    handleVerticalScroll: function(event){\n        this.onVerticalScroll(event.target.scrollTop)\n    },\n\n    onVerticalScroll: function(pos){\n        this.props.onScrollTop(pos)\n    },\n\n    prepareProps: function(thisProps){\n        var props = {}\n\n        assign(props, thisProps)\n\n        return props\n    }\n})\n"
    },
    {
      "id": 13,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "name": "./src/Header/index.jsx",
      "size": 11716,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 38,
        "building": 264,
        "dependencies": 163
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "./Header",
          "loc": "12:21-40"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React   = require('react')\nvar Region  = require('region')\nvar ReactMenu = React.createFactory(require('react-menus'))\nvar assign  = require('object-assign')\nvar clone   = require('clone')\nvar asArray = require('../utils/asArray')\nvar findIndexBy = require('../utils/findIndexBy')\nvar findIndexByName = require('../utils/findIndexByName')\nvar Cell    = require('../Cell')\nvar setupColumnDrag   = require('./setupColumnDrag')\nvar setupColumnResize = require('./setupColumnResize')\n\nfunction emptyFn(){}\n\nfunction getColumnSortInfo(column, sortInfo){\n\n    sortInfo = asArray(sortInfo)\n\n    var index = findIndexBy(sortInfo, function(info){\n        return info.name === column.name\n    })\n\n    return sortInfo[index]\n}\n\nfunction removeColumnSort(column, sortInfo){\n    sortInfo = asArray(sortInfo)\n\n    var index = findIndexBy(sortInfo, function(info){\n        return info.name === column.name\n    })\n\n    if (~index){\n        sortInfo.splice(index, 1)\n    }\n\n    return sortInfo\n}\n\nfunction getDropState(){\n    return {\n        dragLeft  : null,\n        dragColumn: null,\n        dragColumnIndex: null,\n        dragging  : false,\n        dropIndex : null,\n\n        shiftIndexes: null,\n        shiftSize: null\n    }\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Header',\n\n    propTypes: {\n        columns: React.PropTypes.array\n    },\n\n    onDrop: function(event){\n        if (this.state.dragging){\n            event.stopPropagation()\n        }\n\n        var dragIndex = this.state.dragColumnIndex\n        var dropIndex = this.state.dropIndex\n\n        if (dropIndex != null){\n\n            //since we need the indexes in the array of all columns\n            //not only in the array of the visible columns\n            //we need to search them and make this transform\n            var dragColumn = this.props.columns[dragIndex]\n            var dropColumn = this.props.columns[dropIndex]\n\n            dragIndex = findIndexByName(this.props.allColumns, dragColumn.name)\n            dropIndex = findIndexByName(this.props.allColumns, dropColumn.name)\n\n            this.props.onDropColumn(dragIndex, dropIndex)\n        }\n\n        this.setState(getDropState())\n    },\n\n    getDefaultProps: function(){\n        return {\n            defaultClassName : 'z-header-wrapper',\n            draggingClassName: 'z-dragging',\n            cellClassName    : 'z-column-header',\n            defaultStyle    : {},\n            sortInfo        : null,\n            scrollLeft      : 0,\n            scrollTop       : 0\n        }\n    },\n\n    getInitialState: function(){\n\n        return {\n            mouseOver : true,\n            dragging  : false,\n\n            shiftSize : null,\n            dragColumn: null,\n            shiftIndexes: null\n        }\n    },\n\n    render: function() {\n\n        var props = this.prepareProps(this.props)\n\n        var cells = props.columns\n                        .map(this.renderCell.bind(this, props, this.state))\n\n        var headerStyle = {\n            paddingRight: props.scrollbarSize,\n            transform   : 'translate3d(' + -props.scrollLeft + 'px, ' + -props.scrollTop + 'px, 0px)'\n        }\n\n        return (\n            React.createElement(\"div\", {style: props.style, className: props.className}, \n                React.createElement(\"div\", {className: \"z-header\", style: headerStyle}, \n                    cells\n                )\n            )\n        )\n    },\n\n    renderCell: function(props, state, column, index){\n\n        var resizing  = props.resizing\n        var text      = column.title\n        var className = props.cellClassName || ''\n        var style     = {\n            left: 0\n        }\n\n        var menu = this.renderColumnMenu(props, state, column, index)\n\n        if (state.dragColumn && state.shiftIndexes && state.shiftIndexes[index]){\n            style.left = state.shiftSize\n        }\n\n        if (state.dragColumn === column){\n            className += ' z-drag z-over'\n            style.zIndex = 1\n            style.left = state.dragLeft || 0\n        }\n\n        var filter  = column.filterable?\n                        React.createElement(\"div\", {className: \"z-show-filter\", onMouseUp: this.handleFilterMouseUp.bind(this, column)}):\n                        null\n\n        var resizer = column.resizable?\n                        React.createElement(\"span\", {className: \"z-column-resize\", onMouseDown: this.handleResizeMouseDown.bind(this, column)}):\n                        null\n\n        if (column.sortable){\n            text = React.createElement(\"span\", null, text, React.createElement(\"span\", {className: \"z-icon-sort-info\"}))\n\n            var sortInfo = getColumnSortInfo(column, props.sortInfo)\n\n            if (sortInfo && sortInfo.dir){\n                className += (sortInfo.dir === -1 || sortInfo.dir === 'desc'?\n                                ' z-desc':\n                                ' z-asc')\n            }\n\n            className += ' z-sortable'\n        }\n\n        if (filter){\n            className += ' z-filterable'\n        }\n\n        if (state.mouseOver === column.name && !resizing){\n            className += ' z-over'\n        }\n\n        if (props.menuColumn === column.name){\n            className += ' z-active'\n        }\n\n        className += ' z-unselectable'\n\n        return (\n            React.createElement(Cell, {\n                key: column.name, \n                textPadding: props.cellPadding, \n                columns: props.columns, \n                index: index, \n                className: className, \n                style: style, \n                text: text, \n                onMouseOver: this.handleMouseOver.bind(this, column), \n                onMouseOut: this.handleMouseOut.bind(this, column), \n                onMouseDown: this.handleMouseDown.bind(this, column), \n\n                onMouseUp: this.handleMouseUp.bind(this, column)\n            }, \n                filter, \n                menu, \n                resizer\n            )\n        )\n    },\n\n    toggleSort: function(column){\n        var sortInfo       = asArray(clone(this.props.sortInfo))\n        var columnSortInfo = getColumnSortInfo(column, sortInfo)\n\n        if (!columnSortInfo){\n            columnSortInfo = {\n                name: column.name,\n                type: column.type,\n                fn  : column.sortFn\n            }\n\n            sortInfo.push(columnSortInfo)\n        }\n\n        if (typeof column.toggleSort === 'function'){\n            column.toggleSort(columnSortInfo, sortInfo)\n        } else {\n\n            var dir     = columnSortInfo.dir\n            var dirSign = dir === 'asc'? 1 : dir === 'desc'? -1: dir\n            var newDir  = dirSign === 1? -1: dirSign === -1?  0: 1\n\n            columnSortInfo.dir = newDir\n\n            if (!newDir){\n                sortInfo = removeColumnSort(column, sortInfo)\n            }\n        }\n\n        ;(this.props.onSortChange || emptyFn)(sortInfo)\n    },\n\n    renderColumnMenu: function(props, state, column, index){\n        if (!props.withColumnMenu){\n            return\n        }\n\n        return React.createElement(\"div\", {className: \"z-show-menu\", onMouseUp: this.handleShowMenuMouseUp.bind(this, props, column, index)})\n    },\n\n    handleShowMenuMouseUp: function(props, column, index, event){\n        event.nativeEvent.stopSort = true\n\n        this.showMenu(column, event)\n    },\n\n    showMenu: function(column, event){\n\n        var menuItem = function(column){\n            return {\n                cls     : column.visible?'z-selected': '',\n                selected: column.visible? '✓': '',\n                label   : column.title,\n                fn      : this.toggleColumn.bind(this, column)\n            }\n        }.bind(this)\n\n        function menu(eventTarget, props){\n\n            var columns = props.gridColumns\n\n            props.columns = [ 'selected', 'label']\n            props.items = columns.map(menuItem)\n            props.alignTo = eventTarget\n            props.alignPositions = [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ]\n            props.style = {\n                position: 'absolute'\n            }\n\n            var factory = this.props.columnMenuFactory || ReactMenu\n\n            var result = factory(props)\n\n            return result === undefined?\n                    ReactMenu(props):\n                    result\n        }\n\n        this.props.showMenu(menu.bind(this, event.target), {\n            menuColumn: column.name\n        })\n    },\n\n    showFilterMenu: function(column, event){\n\n        function menu(eventTarget, props){\n\n            var defaultFactory = this.props.filterMenuFactory\n            var factory = column.filterMenuFactory || defaultFactory\n\n            props.columns = ['component']\n            props.column = column\n            props.alignTo = eventTarget\n            props.alignPositions = [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ]\n            props.style = {\n                position: 'absolute'\n            }\n\n            var result = factory(props)\n\n            return result === undefined?\n                        defaultFactory(props):\n                        result\n        }\n\n        this.props.showMenu(menu.bind(this, event.target), {\n            menuColumn: column.name\n        })\n    },\n\n    toggleColumn: function(column){\n        this.props.toggleColumn(column)\n    },\n\n    hideMenu: function(){\n        this.props.showColumnMenu(null, null)\n    },\n\n    handleResizeMouseDown: function(column, event){\n        setupColumnResize(this, this.props, column, event)\n\n        //in order to prevent setupColumnDrag in handleMouseDown\n        // event.stopPropagation()\n\n        //we are doing setupColumnDrag protection using the resizing flag on native event\n        if (event.nativeEvent){\n            event.nativeEvent.resizing = true\n        }\n    },\n\n    handleFilterMouseUp: function(column, event){\n        event.nativeEvent.stopSort = true\n\n        this.showFilterMenu(column, event)\n        // event.stopPropagation()\n    },\n\n    handleMouseUp: function(column, event){\n        if (this.state.dragging){\n            return\n        }\n\n        if (event && event.nativeEvent && event.nativeEvent.stopSort){\n            return\n        }\n\n        if (column.sortable){\n            this.toggleSort(column)\n        }\n    },\n\n    handleMouseOut: function(column){\n        this.setState({\n            mouseOver: false\n        })\n    },\n\n    handleMouseOver: function(column){\n        this.setState({\n            mouseOver: column.name\n        })\n    },\n\n    handleMouseDown: function(column, event){\n        if (event && event.nativeEvent && event.nativeEvent.resizing){\n            return\n        }\n\n        setupColumnDrag(this, this.props, column, event)\n    },\n\n    onResizeDragStart: function(config){\n        this.props.onColumnResizeDragStart(config)\n    },\n\n    onResizeDrag: function(config){\n        this.props.onColumnResizeDrag(config)\n    },\n\n    onResizeDrop: function(config, resizeInfo){\n        this.props.onColumnResizeDrop(config, resizeInfo)\n    },\n\n    prepareProps: function(thisProps){\n        var props = {}\n\n        assign(props, thisProps)\n\n        this.prepareClassName(props)\n        this.prepareStyle(props)\n\n        return props\n    },\n\n    prepareClassName: function(props){\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        if (this.state.dragging){\n            props.className += ' ' + props.draggingClassName\n        }\n    },\n\n    prepareStyle: function(props){\n        var style = props.style = {}\n\n        assign(style, props.defaultStyle)\n    }\n})\n"
    },
    {
      "id": 14,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/object-assign/index.js",
      "name": "./~/object-assign/index.js",
      "size": 484,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 45,
        "building": 290
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:15-39"
        },
        {
          "moduleId": 2,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
          "module": "./src/models/Column.js",
          "moduleName": "./src/models/Column.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:15-39"
        },
        {
          "moduleId": 9,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
          "module": "./src/RowSelect.js",
          "moduleName": "./src/RowSelect.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:13-37"
        },
        {
          "moduleId": 10,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
          "module": "./src/ColumnFilter.js",
          "moduleName": "./src/ColumnFilter.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:13-37"
        },
        {
          "moduleId": 12,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Wrapper/index.jsx",
          "module": "./src/Wrapper/index.jsx",
          "moduleName": "./src/Wrapper/index.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "6:14-38"
        },
        {
          "moduleId": 19,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
          "module": "./src/render/renderRow.jsx",
          "moduleName": "./src/render/renderRow.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:13-37"
        },
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "5:18-42"
        },
        {
          "moduleId": 26,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
          "module": "./src/Cell/index.jsx",
          "moduleName": "./src/Cell/index.jsx",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        }
      ],
      "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
    },
    {
      "id": 15,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
      "name": "./~/region/index.js",
      "size": 33,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 45,
        "building": 289
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "6:15-32"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "4:14-31"
        },
        {
          "moduleId": 23,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
          "module": "./src/Header/setupColumnDrag.js",
          "moduleName": "./src/Header/setupColumnDrag.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:17-34"
        },
        {
          "moduleId": 24,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
          "module": "./src/Header/setupColumnResize.js",
          "moduleName": "./src/Header/setupColumnResize.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:17-34"
        },
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "4:18-35"
        },
        {
          "moduleId": 60,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "module": "./~/region-align/index.js",
          "moduleName": "./~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 73,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.static.js",
          "module": "./~/region-align/Region.static.js",
          "moduleName": "./~/region-align/Region.static.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 74,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.proto.js",
          "module": "./~/region-align/Region.proto.js",
          "moduleName": "./~/region-align/Region.proto.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 75,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
          "module": "./~/region-align/computeAlignRegion.js",
          "moduleName": "./~/region-align/computeAlignRegion.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "5:13-30"
        },
        {
          "moduleId": 103,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/alignToNormalized.js",
          "module": "./~/region-align/alignToNormalized.js",
          "moduleName": "./~/region-align/alignToNormalized.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        }
      ],
      "source": "module.exports = require('./src')"
    },
    {
      "id": 16,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
      "name": "/usr/local/lib/~/react-load-mask/lib/index.js",
      "size": 1105,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
      "profile": {
        "factory": 49,
        "building": 307,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/index.jsx",
          "module": "./src/index.jsx",
          "moduleName": "./src/index.jsx",
          "type": "cjs require",
          "userRequest": "react-load-mask",
          "loc": "5:15-41"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\nvar Loader = require('./Loader')\n\nmodule.exports = React.createClass({\n\n    displayName: 'LoadMask',\n\n    getDefaultProps: function(){\n\n        return {\n            visibleDisplayValue: 'block',\n            defaultStyle: {\n                position: 'absolute',\n                width   : '100%',\n                height  : '100%',\n                display : 'none',\n                top: 0,\n                left: 0\n            }\n        }\n    },\n\n    render: function(){\n        var props = assign({}, this.props)\n\n        this.prepareStyle(props)\n\n        props.className = props.className || ''\n        props.className += ' loadmask'\n\n        return React.DOM.div(props, React.createElement(Loader, {size: props.size}))\n    },\n\n    prepareStyle: function(props){\n\n        var style = {}\n\n        assign(style, props.defaultStyle)\n        assign(style, props.style)\n\n        style.display = props.visible?\n                        props.visibleDisplayValue:\n                        'none'\n\n        props.style = style\n    }\n})"
    },
    {
      "id": 17,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexBy.js",
      "name": "./src/utils/findIndexBy.js",
      "size": 232,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "profile": {
        "factory": 27,
        "building": 28
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 4,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/findIndexByName.js",
          "module": "./src/utils/findIndexByName.js",
          "moduleName": "./src/utils/findIndexByName.js",
          "type": "cjs require",
          "userRequest": "./findIndexBy",
          "loc": "3:17-41"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "../utils/findIndexBy",
          "loc": "9:18-49"
        }
      ],
      "source": "'use strict';\n\nfunction findIndexBy(arr, fn){\n\n    var i   = 0\n    var len = arr.length\n\n    for (; i < len; i++){\n        if (fn(arr[i]) === true){\n            return i\n        }\n    }\n\n    return -1\n}\n\nmodule.exports = findIndexBy"
    },
    {
      "id": 18,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderMenu.jsx",
      "name": "./src/render/renderMenu.jsx",
      "size": 239,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
      "profile": {
        "factory": 238,
        "building": 39
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 7,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "module": "./src/render/renderTable.jsx",
          "moduleName": "./src/render/renderTable.jsx",
          "type": "cjs require",
          "userRequest": "./renderMenu",
          "loc": "4:17-40"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nmodule.exports = function renderMenu(props){\n    if (!props.menu){\n        return\n    }\n\n    return props.menu({\n        className : 'z-header-menu-column',\n        gridColumns: props.allColumns\n    })\n}"
    },
    {
      "id": 19,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
      "name": "./src/render/renderRow.jsx",
      "size": 2395,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
      "profile": {
        "factory": 238,
        "building": 34,
        "dependencies": 2
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 7,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "module": "./src/render/renderTable.jsx",
          "moduleName": "./src/render/renderTable.jsx",
          "type": "cjs require",
          "userRequest": "./renderRow",
          "loc": "5:17-39"
        },
        {
          "moduleId": 8,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "module": "./src/render/getGroupedRows.jsx",
          "moduleName": "./src/render/getGroupedRows.jsx",
          "type": "cjs require",
          "userRequest": "./renderRow",
          "loc": "9:16-38"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar assign = require('object-assign')\n\nvar Row        = require('../Row')\nvar RowFactory = React.createFactory(Row)\n\n/**\n * Render a datagrid row\n *\n * @param  {Object}   props The props from which to build row props\n * @param  {Object}   data The data object that backs this row\n * @param  {Number}   index The index in the grid of the row to be rendered\n * @param  {Function} [fn] A function that can be used to modify built row props\n *\n * If props.rowFactory is specified, it will be used to build the ReactElement\n * corresponding to this row. In case it returns undefined, the default RowFactory will be used\n * (this case occurs when the rowFactory was specified just to modify the row props)\n *\n * @return {ReactElement}\n */\nmodule.exports = function renderRow(props, data, index, fn){\n    var factory  = props.rowFactory || RowFactory\n    var key      = data[props.idProperty]\n\n    var selected = false\n\n    if (typeof props.selected == 'object' && props.selected){\n        selected = !!props.selected[key]\n    } else if (props.selected){\n        selected = key === props.selected\n    }\n\n    var config = {\n        className: index % 2 === 0? 'z-even': 'z-odd',\n        selected : selected,\n\n        key      : key,\n        data     : data,\n        index    : index,\n\n        cellFactory: props.cellFactory,\n        renderCell : props.renderCell,\n        renderText : props.renderText,\n        cellPadding: props.cellPadding,\n        rowHeight  : props.rowHeight,\n        columns    : props.columns,\n\n        rowContextMenu: props.rowContextMenu,\n        showMenu: props.showMenu,\n\n        _onClick: props.onRowClick\n    }\n\n    var style\n    var rowStyle = props.rowStyle\n\n    if (rowStyle){\n        style = {}\n\n        if (typeof rowStyle == 'function'){\n            style = rowStyle(data, config)\n        } else {\n            assign(style, rowStyle)\n        }\n\n        config.style = style\n    }\n\n    var className = props.rowClassName\n\n    if (typeof className == 'function'){\n        className = className(data, config)\n    }\n\n    if (className){\n        config.className = className\n    }\n\n    if (typeof fn == 'function'){\n        config = fn(config)\n    }\n\n    var row = factory(config)\n\n    if (row === undefined){\n        row = RowFactory(config)\n    }\n\n    if (config.selected && this){\n        this.selIndex = index\n    }\n\n    return row\n}"
    },
    {
      "id": 20,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/render/tableStyle.js",
      "name": "./src/render/tableStyle.js",
      "size": 272,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
      "profile": {
        "factory": 239,
        "building": 38
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 7,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderTable.jsx",
          "module": "./src/render/renderTable.jsx",
          "moduleName": "./src/render/renderTable.jsx",
          "type": "cjs require",
          "userRequest": "./tableStyle",
          "loc": "6:18-41"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function(props){\n    var scrollTop  = props.virtualRendering?\n                        0:\n                        props.scrollTop\n\n    return {\n        transform: 'translate3d(' + -props.scrollLeft + 'px, ' + -scrollTop + 'px, 0px)'\n    }\n}\n"
    },
    {
      "id": 21,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/getSelected.js",
      "name": "./src/getSelected.js",
      "size": 232,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
      "profile": {
        "factory": 173,
        "building": 39
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 9,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/RowSelect.js",
          "module": "./src/RowSelect.js",
          "moduleName": "./src/RowSelect.js",
          "type": "cjs require",
          "userRequest": "./getSelected",
          "loc": "4:18-42"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function(props, state){\n    var selected = props.selected == null?\n                        state.defaultSelected\n                        :\n                        props.selected\n\n    return selected\n}"
    },
    {
      "id": 22,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/asArray.js",
      "name": "./src/utils/asArray.js",
      "size": 153,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "profile": {
        "factory": 34,
        "building": 40
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "../utils/asArray",
          "loc": "8:14-41"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function asArray(x){\n    if (!x){\n        x = []\n    }\n\n    if (!Array.isArray(x)){\n        x = [x]\n    }\n\n    return x\n}"
    },
    {
      "id": 23,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
      "name": "./src/Header/setupColumnDrag.js",
      "size": 3872,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "profile": {
        "factory": 33,
        "building": 51,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "./setupColumnDrag",
          "loc": "12:24-52"
        }
      ],
      "source": "'use strict';\n\nvar Region     = require('region')\nvar DragHelper = require('drag-helper')\n\nfunction range(start, end){\n    var res = []\n\n    for ( ; start <= end; start++){\n        res.push(start)\n    }\n\n    return res\n}\n\nfunction buildIndexes(direction, index, dragIndex){\n    var indexes = direction < 0 ?\n                    range(index, dragIndex):\n                    range(dragIndex, index)\n\n    var result = {}\n\n    indexes.forEach(function(value){\n        result[value] = true\n    })\n\n    return result\n}\n\nmodule.exports = function(header, props, column, event){\n\n    event.preventDefault()\n\n    var headerNode   = header.getDOMNode()\n    var headerRegion = Region.from(headerNode)\n    var dragColumn = column\n    var dragColumnIndex\n    var columnData\n    var shiftRegion\n\n    DragHelper(event, {\n\n        constrainTo: headerRegion.expand({ top: true, bottom: true}),\n\n        onDragStart: function(event, config){\n\n            var columnHeaders = headerNode.querySelectorAll('.' + props.cellClassName)\n\n            columnData = props.columns.map(function(column, i){\n                var region = Region.from(columnHeaders[i])\n\n                if (column === dragColumn){\n                    dragColumnIndex = i\n                    shiftRegion = region.clone()\n                }\n\n                return {\n                    column: column,\n                    index: i,\n                    region: region\n                }\n            })\n\n            header.setState({\n                dragColumn: column,\n                dragging  : true\n            })\n\n            config.columnData = columnData\n\n        },\n        onDrag: function(event, config){\n            var diff = config.diff.left\n            var directionSign = diff < 0? -1: 1\n            var state = {\n                dragColumnIndex  : dragColumnIndex,\n                dragColumn  : dragColumn,\n                dragLeft    : diff,\n                dropIndex   : null,\n                shiftIndexes: null,\n                shiftSize   : null\n            }\n\n            var shift\n            var shiftSize\n            var newLeft   = shiftRegion.left + diff\n            var newRight  = newLeft + shiftRegion.width\n            var shiftZone = { left: newLeft, right: newRight}\n\n            config.columnData.forEach(function(columnData, index, arr){\n\n                var itColumn = columnData.column\n                var itRegion = columnData.region\n\n                if (shift || itColumn === dragColumn){\n                    return\n                }\n\n                var itLeft  = itRegion.left\n                var itRight = itRegion.right\n                var itZone  = directionSign == -1?\n                            { left: itLeft, right: itLeft + itRegion.width }:\n                            { left: itRight - itRegion.width, right: itRight }\n\n                if (shiftRegion.width < itRegion.width){\n                    //shift region is smaller than itRegion\n                    shift = Region.getIntersectionWidth(\n                            itZone,\n                            shiftZone\n                        ) >= Math.min(\n                            itRegion.width,\n                            shiftRegion.width\n                        ) / 2\n\n                } else {\n                    //shift region is bigger than itRegion\n                    shift = Region.getIntersectionWidth(itRegion, shiftZone) >= itRegion.width / 2\n                }\n\n                if (shift) {\n                    shiftSize = -directionSign * shiftRegion.width\n                    state.dropIndex = index\n                    state.shiftIndexes = buildIndexes(directionSign, index, dragColumnIndex)\n                    state.shiftSize = shiftSize\n                }\n            })\n\n            header.setState(state)\n        },\n\n        onDrop: function(event){\n            header.onDrop(event)\n        }\n    })\n}"
    },
    {
      "id": 24,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
      "name": "./src/Header/setupColumnResize.js",
      "size": 2646,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "profile": {
        "factory": 32,
        "building": 68,
        "dependencies": 224
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "./setupColumnResize",
          "loc": "13:24-54"
        }
      ],
      "source": "'use strict';\n\nvar Region     = require('region')\nvar DragHelper = require('drag-helper')\n\nvar findIndexByName = require('../utils/findIndexByName')\n\nmodule.exports = function(header, props, column, event){\n\n    // event.stopPropagation()\n    event.preventDefault()\n\n    var columns = props.columns\n    var index = findIndexByName(columns, column.name)\n    var proxyLeft = Region.from(event.target).right\n\n    var headerNode = header.getDOMNode()\n\n    var constrainTo = Region.from(headerNode)\n\n    DragHelper(event, {\n        constrainTo: constrainTo,\n\n        onDragStart: function(event, config){\n\n            header.onResizeDragStart({\n                resizing       : true,\n                resizeColumn   : column,\n                resizeProxyLeft: proxyLeft\n            })\n        },\n\n        onDrag: function(event, config){\n            var diff = config.diff.left\n\n            header.onResizeDrag({\n                resizeProxyDiff: diff\n            })\n        },\n\n        onDrop: function(event, config){\n\n            var diff = config.diff.left\n            var columnHeaders = headerNode.querySelectorAll('.' + props.cellClassName)\n            var nextColumn    = diff > 0?\n                                    null:\n                                    columns[index + 1]\n\n            var columnSize = Region.from(columnHeaders[index]).width\n            var nextColumnSize\n            var firstSize  = columnSize + diff\n            var secondSize = 0\n\n            if (firstSize < column.minWidth){\n                firstSize = column.minWidth\n                diff = firstSize - columnSize\n            }\n\n            if (nextColumn){\n                nextColumnSize = nextColumn?\n                                        Region.from(columnHeaders[ index + 1]).width\n                                        : 0\n\n                secondSize = nextColumnSize - diff\n\n            }\n\n            if (nextColumn && secondSize < nextColumn.minWidth){\n                secondSize = nextColumn.minWidth\n                diff = nextColumnSize - secondSize\n                firstSize = columnSize + diff\n            }\n\n            var resizeInfo = [{\n                name: column.name,\n                size: firstSize,\n                diff: diff\n            }]\n\n            if (nextColumn){\n                resizeInfo.push({\n                    name: nextColumn.name,\n                    size: secondSize,\n                    diff: -diff\n                })\n            }\n\n            header.onResizeDrop({\n                resizing: false,\n                resizeColumn: null,\n                resizeProxyLeft: null\n            }, resizeInfo)\n        }\n    })\n}"
    },
    {
      "id": 25,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
      "name": "./src/Row/index.jsx",
      "size": 4840,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
      "profile": {
        "factory": 222,
        "building": 97,
        "dependencies": 33
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 8,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "module": "./src/render/getGroupedRows.jsx",
          "moduleName": "./src/render/getGroupedRows.jsx",
          "type": "cjs require",
          "userRequest": "../Row",
          "loc": "5:18-35"
        },
        {
          "moduleId": 19,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/renderRow.jsx",
          "module": "./src/render/renderRow.jsx",
          "moduleName": "./src/render/renderRow.jsx",
          "type": "cjs require",
          "userRequest": "../Row",
          "loc": "5:17-34"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React       = require('react')\nvar Region      = require('region')\nvar assign      = require('object-assign')\nvar Cell        = require('../Cell')\nvar CellFactory = React.createFactory(Cell)\nvar ReactMenu = require('react-menus')\nvar ReactMenuFactory = React.createFactory(ReactMenu)\nvar prefixer  = require('react-prefixr')\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Row',\n\n    propTypes: {\n        data   : React.PropTypes.object,\n        columns: React.PropTypes.array,\n        index  : React.PropTypes.number\n    },\n\n    getDefaultProps: function(){\n\n        return {\n            defaultClassName  : 'z-row',\n            mouseOverClassName: 'z-over',\n            selectedClassName : 'z-selected',\n            defaultStyle      : prefixer({\n                userSelect: 'none'\n            })\n        }\n    },\n\n    getInitialState: function(){\n        return {\n            mouseOver: false\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props)\n        var cells = props.children || props.columns\n                                        .map(this.renderCell.bind(this, this.props))\n\n        return React.createElement(\"div\", React.__spread({},  props), cells)\n    },\n\n    prepareProps: function(thisProps){\n        var props = assign({}, thisProps)\n\n        props.className = this.prepareClassName(props, this.state)\n        props.style = this.prepareStyle(props)\n\n        props.onMouseEnter = this.handleMouseEnter\n        props.onMouseLeave = this.handleMouseLeave\n        props.onContextMenu = this.handleContextMenu\n        props.onClick = this.handleRowClick\n\n        delete props.data\n        delete props.cellPadding\n\n        return props\n    },\n\n    handleRowClick: function(event){\n\n        if (this.props.onClick){\n            this.props.onClick(event)\n        }\n\n        if (this.props._onClick){\n            this.props._onClick(this.props, event)\n        }\n    },\n\n    handleContextMenu: function(event){\n\n        if (this.props.rowContextMenu){\n            this.showMenu(event)\n        }\n\n        if (this.props.onContextMenu){\n            this.props.onContextMenu(event)\n        }\n    },\n\n    showMenu: function(event){\n        var factory = this.props.rowContextMenu\n        var alignTo = Region.from(event)\n\n        var props = {\n            style: {\n                position: 'absolute'\n            },\n            rowProps: this.props,\n            data    : this.props.data,\n            alignTo : alignTo,\n            alignPositions: [\n                'tl-bl',\n                'tr-br',\n                'bl-tl',\n                'br-tr'\n            ],\n            items: [\n                {\n                    label: 'stop'\n                }\n            ]\n        }\n\n        var menu = factory(props)\n\n        if (menu === undefined){\n            menu = ReactMenuFactory(props)\n        }\n\n        event.preventDefault()\n\n        this.props.showMenu(function(){\n            return menu\n        })\n    },\n\n    handleMouseLeave: function(event){\n        this.setState({\n            mouseOver: false\n        })\n\n        if (this.props.onMouseLeave){\n            this.props.onMouseLeave(event)\n        }\n    },\n\n    handleMouseEnter: function(event){\n        this.setState({\n            mouseOver: true\n        })\n\n        if (this.props.onMouseEnter){\n            this.props.onMouseEnter(event)\n        }\n    },\n\n    renderCell: function(props, column, index){\n\n        var text = props.data[column.name]\n\n        var cellProps = {\n            key        : column.name,\n            name       : column.name,\n            data       : props.data,\n            columns    : props.columns,\n            index      : index,\n            rowIndex   : props.index,\n            textPadding: props.cellPadding,\n            renderCell : props.renderCell,\n            renderText : props.renderText\n        }\n\n        if (typeof column.render == 'function'){\n            text = column.render(text, props.data, cellProps)\n        }\n\n        cellProps.text = text\n\n        var result\n\n        if (props.cellFactory){\n            result = props.cellFactory(cellProps)\n        }\n\n        if (result === undefined){\n            result = CellFactory(cellProps)\n        }\n\n        return result\n    },\n\n    prepareClassName: function(props, state){\n        var className = props.className || ''\n\n        className += ' ' + props.defaultClassName\n\n        if (state.mouseOver){\n            className += ' ' + props.mouseOverClassName\n        }\n\n        if (props.selected){\n            className += ' ' + props.selectedClassName\n        }\n\n        return className\n    },\n\n    prepareStyle: function(props){\n\n        var style = assign({}, props.defaultStyle, props.style)\n\n        style.height = props.rowHeight\n\n        return style\n    }\n})\n"
    },
    {
      "id": 26,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Cell/index.jsx",
      "name": "./src/Cell/index.jsx",
      "size": 2261,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
      "profile": {
        "factory": 222,
        "building": 119,
        "dependencies": 23
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 8,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/render/getGroupedRows.jsx",
          "module": "./src/render/getGroupedRows.jsx",
          "moduleName": "./src/render/getGroupedRows.jsx",
          "type": "cjs require",
          "userRequest": "../Cell",
          "loc": "6:18-36"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "../Cell",
          "loc": "11:14-32"
        },
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "../Cell",
          "loc": "6:18-36"
        }
      ],
      "source": "/** @jsx React.DOM */'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nfunction copyProps(target, source, list){\n\n    list.forEach(function(name){\n        if (name in source){\n            target[name] = source[name]\n        }\n    })\n\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactDataGrid.Cell',\n\n    propTypes: {\n        className  : React.PropTypes.string,\n        textPadding: React.PropTypes.number,\n        style      : React.PropTypes.object,\n        text       : React.PropTypes.any,\n        rowIndex   : React.PropTypes.number\n    },\n\n    getDefaultProps: function(){\n        return {\n            text: '',\n            defaultClassName: 'z-cell'\n        }\n    },\n\n    render: function(){\n        var props     = this.props\n\n        var columns   = props.columns\n        var index     = props.index\n        var column    = columns? columns[index]: null\n        var className = props.className || ''\n        var text      = props.renderText?\n                            props.renderText(props.text, column, props.rowIndex):\n                            props.text\n\n        var textCellProps = {\n            className: 'z-text',\n            style    : {padding: props.textPadding}\n        }\n\n        var textCell = props.renderCell?\n                            props.renderCell(textCellProps, text, props):\n                            React.DOM.div(textCellProps, text)\n\n        if (!index){\n            className += ' z-first'\n        }\n        if (columns && index == columns.length - 1){\n            className += ' z-last'\n        }\n\n        className += ' ' + props.defaultClassName\n\n        var cellProps = {\n            className: className,\n            style    : assign({}, props.style, column? column.style: null)\n        }\n\n        copyProps(cellProps, props, [\n            'onMouseOver',\n            'onMouseOut',\n            'onClick',\n            'onMouseDown',\n            'onMouseUp'\n        ])\n\n        return (\n            React.createElement(\"div\", React.__spread({},  cellProps), \n                React.createElement(\"div\", {className: \"z-inner\", style: props.innerStyle}, \n                    textCell\n                ), \n                props.children\n            )\n        )\n    }\n})"
    },
    {
      "id": 27,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "name": "./~/ustring/index.js",
      "size": 524,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
      "profile": {
        "factory": 300,
        "building": 125
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 2,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/models/Column.js",
          "module": "./src/models/Column.js",
          "moduleName": "./src/models/Column.js",
          "type": "cjs require",
          "userRequest": "ustring",
          "loc": "3:15-33"
        }
      ],
      "source": "module.exports = {\n    toLowerFirst     : require('./src/toLowerFirst'),\n    toUpperFirst     : require('./src/toUpperFirst'),\n    separate         : require('./src/separate'),\n    stripWhitespace  : require('./src/stripWhitespace'),\n    compactWhitespace: require('./src/compactWhitespace'),\n    camelize         : require('./src/camelize'),\n    humanize         : require('./src/humanize'),\n    hyphenate        : require('./src/hyphenate'),\n    endsWith         : require('./src/endsWith'),\n\n    is: require('./src/is')\n}"
    },
    {
      "id": 28,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/hasown/index.js",
      "name": "./~/hasown/index.js",
      "size": 700,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
      "profile": {
        "factory": 266,
        "building": 130
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 5,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/utils/group.js",
          "module": "./src/utils/group.js",
          "moduleName": "./src/utils/group.js",
          "type": "cjs require",
          "userRequest": "hasown",
          "loc": "3:13-30"
        },
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "hasown",
          "loc": "3:16-33"
        },
        {
          "moduleId": 35,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
          "module": "./~/region/src/statics.js",
          "moduleName": "./~/region/src/statics.js",
          "type": "cjs require",
          "userRequest": "hasown",
          "loc": "3:15-32"
        }
      ],
      "source": "'use strict'\n\nvar hasOwn = Object.prototype.hasOwnProperty\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\n\nmodule.exports = curry(function(object, property){\n    return hasOwn.call(object, property)\n})"
    },
    {
      "id": 29,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "name": "./~/region/src/index.js",
      "size": 27185,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
      "profile": {
        "factory": 82,
        "building": 160,
        "dependencies": 77
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 15,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/index.js",
          "module": "./~/region/index.js",
          "moduleName": "./~/region/index.js",
          "type": "cjs require",
          "userRequest": "./src",
          "loc": "1:17-33"
        }
      ],
      "source": "'use strict';\n\nvar hasOwn    = require('hasown')\nvar newify    = require('newify')\nvar copyUtils = require('copy-utils')\nvar copyList  = copyUtils.copyList\nvar copy      = copyUtils.copy\nvar isObject  = require('i-s').object\nvar EventEmitter = require('events').EventEmitter\nvar inherits = require('./inherits')\nvar VALIDATE = require('./validate')\n\n/**\n * @class Region\n *\n * The Region is an abstraction that allows the developer to refer to rectangles on the screen,\n * and move them around, make diffs and unions, detect intersections, compute areas, etc.\n *\n * ## Creating a region\n *      var region = require('region')({\n *          top  : 10,\n *          left : 10,\n *          bottom: 100,\n *          right : 100\n *      })\n *      //this region is a square, 90x90, starting from (10,10) to (100,100)\n *\n *      var second = require('region')({ top: 10, left: 100, right: 200, bottom: 60})\n *      var union  = region.getUnion(second)\n *\n *      //the \"union\" region is a union between \"region\" and \"second\"\n */\n\nvar POINT_POSITIONS = {\n        cy: 'YCenter',\n        cx: 'XCenter',\n        t : 'Top',\n        tc: 'TopCenter',\n        tl: 'TopLeft',\n        tr: 'TopRight',\n        b : 'Bottom',\n        bc: 'BottomCenter',\n        bl: 'BottomLeft',\n        br: 'BottomRight',\n        l : 'Left',\n        lc: 'LeftCenter',\n        r : 'Right',\n        rc: 'RightCenter',\n        c : 'Center'\n    }\n\n/**\n * @constructor\n *\n * Construct a new Region.\n *\n * Example:\n *\n *      var r = new Region({ top: 10, left: 20, bottom: 100, right: 200 })\n *\n *      //or, the same, but with numbers (can be used with new or without)\n *\n *      r = Region(10, 200, 100, 20)\n *\n *      //or, with width and height\n *\n *      r = Region({ top: 10, left: 20, width: 180, height: 90})\n *\n * @param {Number|Object} top The top pixel position, or an object with top, left, bottom, right properties. If an object is passed,\n * instead of having bottom and right, it can have width and height.\n *\n * @param {Number} right The right pixel position\n * @param {Number} bottom The bottom pixel position\n * @param {Number} left The left pixel position\n *\n * @return {Region} this\n */\nvar REGION = function(top, right, bottom, left){\n\n    if (!(this instanceof REGION)){\n        return newify(REGION, arguments)\n    }\n\n    EventEmitter.call(this)\n\n    if (isObject(top)){\n        copyList(top, this, ['top','right','bottom','left'])\n\n        if (top.bottom == null && top.height != null){\n            this.bottom = this.top + top.height\n        }\n        if (top.right == null && top.width != null){\n            this.right = this.left + top.width\n        }\n\n        if (top.emitChangeEvents){\n            this.emitChangeEvents = top.emitChangeEvents\n        }\n    } else {\n        this.top    = top\n        this.right  = right\n        this.bottom = bottom\n        this.left   = left\n    }\n\n    this[0] = this.left\n    this[1] = this.top\n\n    VALIDATE(this)\n}\n\ninherits(REGION, EventEmitter)\n\ncopy({\n\n    /**\n     * @cfg {Boolean} emitChangeEvents If this is set to true, the region\n     * will emit 'changesize' and 'changeposition' whenever the size or the position changs\n     */\n    emitChangeEvents: false,\n\n    /**\n     * Returns this region, or a clone of this region\n     * @param  {Boolean} [clone] If true, this method will return a clone of this region\n     * @return {Region}       This region, or a clone of this\n     */\n    getRegion: function(clone){\n        return clone?\n                    this.clone():\n                    this\n    },\n\n    /**\n     * Sets the properties of this region to those of the given region\n     * @param {Region/Object} reg The region or object to use for setting properties of this region\n     * @return {Region} this\n     */\n    setRegion: function(reg){\n\n        if (reg instanceof REGION){\n            this.set(reg.get())\n        } else {\n            this.set(reg)\n        }\n\n        return this\n    },\n\n    /**\n     * Returns true if this region is valid, false otherwise\n     *\n     * @param  {Region} region The region to check\n     * @return {Boolean}        True, if the region is valid, false otherwise.\n     * A region is valid if\n     *  * left <= right  &&\n     *  * top  <= bottom\n     */\n    validate: function(){\n        return REGION.validate(this)\n    },\n\n    _before: function(){\n        if (this.emitChangeEvents){\n            return copyList(this, {}, ['left','top','bottom','right'])\n        }\n    },\n\n    _after: function(before){\n        if (this.emitChangeEvents){\n\n            if(this.top != before.top || this.left != before.left) {\n                this.emitPositionChange()\n            }\n\n            if(this.right != before.right || this.bottom != before.bottom) {\n                this.emitSizeChange()\n            }\n        }\n    },\n\n    notifyPositionChange: function(){\n        this.emit('changeposition', this)\n    },\n\n    emitPositionChange: function(){\n        this.notifyPositionChange()\n    },\n\n    notifySizeChange: function(){\n        this.emit('changesize', this)\n    },\n\n    emitSizeChange: function(){\n        this.notifySizeChange()\n    },\n\n    /**\n     * Add the given amounts to each specified side. Example\n     *\n     *      region.add({\n     *          top: 50,    //add 50 px to the top side\n     *          bottom: -100    //substract 100 px from the bottom side\n     *      })\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    add: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            this[direction] += directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * The same as {@link #add}, but substracts the given values\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    substract: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if (hasOwn(directions, direction) ) {\n            this[direction] -= directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the size of the region.\n     * @return {Object} An object with {width, height}, corresponding to the width and height of the region\n     */\n    getSize: function(){\n        return {\n            width  : this.width,\n            height : this.height\n        }\n    },\n\n    /**\n     * Move the region to the given position and keeps the region width and height.\n     *\n     * @param {Object} position An object with {top, left} properties. The values in {top,left} are used to move the region by the given amounts.\n     * @param {Number} [position.left]\n     * @param {Number} [position.top]\n     *\n     * @return {Region} this\n     */\n    setPosition: function(position){\n        var width  = this.width\n        var height = this.height\n\n        if (position.left != undefined){\n            position.right  = position.left + width\n        }\n\n        if (position.top != undefined){\n            position.bottom = position.top  + height\n        }\n\n        return this.set(position)\n    },\n\n    /**\n     * Sets both the height and the width of this region to the given size.\n     *\n     * @param {Number} size The new size for the region\n     * @return {Region} this\n     */\n    setSize: function(size){\n        if (size.height != undefined && size.width != undefined){\n            return this.set({\n                right  : this.left + size.width,\n                bottom : this.top  + size.height\n            })\n        }\n\n        if (size.width != undefined){\n            this.setWidth(size.width)\n        }\n\n        if (size.height != undefined){\n            this.setHeight(size.height)\n        }\n\n        return this\n    },\n\n\n\n    /**\n     * @chainable\n     *\n     * Sets the width of this region\n     * @param {Number} width The new width for this region\n     * @return {Region} this\n     */\n    setWidth: function(width){\n        return this.set({\n            right: this.left + width\n        })\n    },\n\n    /**\n     * @chainable\n     *\n     * Sets the height of this region\n     * @param {Number} height The new height for this region\n     * @return {Region} this\n     */\n    setHeight: function(height){\n        return this.set({\n            bottom: this.top + height\n        })\n    },\n\n    /**\n     * Sets the given properties on this region\n     *\n     * @param {Object} directions an object containing top, left, and EITHER bottom, right OR width, height\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @param {Number} [directions.width]\n     * @param {Number} [directions.height]\n     *\n     *\n     * @return {Region} this\n     */\n    set: function(directions){\n        var before = this._before()\n\n        copyList(directions, this, ['left','top','bottom','right'])\n\n        if (directions.bottom == null && directions.height != null){\n            this.bottom = this.top + directions.height\n        }\n        if (directions.right == null && directions.width != null){\n            this.right = this.left + directions.width\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the given property from this region. If no property is given, return an object\n     * with {left, top, right, bottom}\n     *\n     * @param {String} [dir] the property to retrieve from this region\n     * @return {Number/Object}\n     */\n    get: function(dir){\n        return dir? this[dir]:\n                    copyList(this, {}, ['left','right','top','bottom'])\n    },\n\n    /**\n     * Shifts this region to either top, or left or both.\n     * Shift is similar to {@link #add} by the fact that it adds the given dimensions to top/left sides, but also adds the given dimensions\n     * to bottom and right\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    shift: function(directions){\n\n        var before = this._before()\n\n        if (directions.top){\n            this.top    += directions.top\n            this.bottom += directions.top\n        }\n\n        if (directions.left){\n            this.left  += directions.left\n            this.right += directions.left\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Same as {@link #shift}, but substracts the given values\n     * @chainable\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    unshift: function(directions){\n\n        if (directions.top){\n            directions.top *= -1\n        }\n\n        if (directions.left){\n            directions.left *= -1\n        }\n\n        return this.shift(directions)\n    },\n\n    /**\n     * Compare this region and the given region. Return true if they have all the same size and position\n     * @param  {Region} region The region to compare with\n     * @return {Boolean}       True if this and region have same size and position\n     */\n    equals: function(region){\n        return this.equalsPosition(region) && this.equalsSize(region)\n    },\n\n    /**\n     * Returns true if this region has the same bottom,right properties as the given region\n     * @param  {Region/Object} size The region to compare against\n     * @return {Boolean}       true if this region is the same size as the given size\n     */\n    equalsSize: function(size){\n        var isInstance = size instanceof REGION\n\n        var s = {\n            width: size.width == null && isInstance?\n                    size.getWidth():\n                    size.width,\n\n            height: size.height == null && isInstance?\n                    size.getHeight():\n                    size.height\n        }\n        return this.getWidth() == s.width && this.getHeight() == s.height\n    },\n\n    /**\n     * Returns true if this region has the same top,left properties as the given region\n     * @param  {Region} region The region to compare against\n     * @return {Boolean}       true if this.top == region.top and this.left == region.left\n     */\n    equalsPosition: function(region){\n        return this.top == region.top && this.left == region.left\n    },\n\n    /**\n     * Adds the given ammount to the left side of this region\n     * @param {Number} left The ammount to add\n     * @return {Region} this\n     */\n    addLeft: function(left){\n        var before = this._before()\n\n        this.left = this[0] = this.left + left\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the top side of this region\n     * @param {Number} top The ammount to add\n     * @return {Region} this\n     */\n    addTop: function(top){\n        var before = this._before()\n\n        this.top = this[1] = this.top + top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the bottom side of this region\n     * @param {Number} bottom The ammount to add\n     * @return {Region} this\n     */\n    addBottom: function(bottom){\n        var before = this._before()\n\n        this.bottom += bottom\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the right side of this region\n     * @param {Number} right The ammount to add\n     * @return {Region} this\n     */\n    addRight: function(right){\n        var before = this._before()\n\n        this.right += right\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Minimize the top side.\n     * @return {Region} this\n     */\n    minTop: function(){\n        return this.expand({top: 1})\n    },\n    /**\n     * Minimize the bottom side.\n     * @return {Region} this\n     */\n    maxBottom: function(){\n        return this.expand({bottom: 1})\n    },\n    /**\n     * Minimize the left side.\n     * @return {Region} this\n     */\n    minLeft: function(){\n        return this.expand({left: 1})\n    },\n    /**\n     * Maximize the right side.\n     * @return {Region} this\n     */\n    maxRight: function(){\n        return this.expand({right: 1})\n    },\n\n    /**\n     * Expands this region to the dimensions of the given region, or the document region, if no region is expanded.\n     * But only expand the given sides (any of the four can be expanded).\n     *\n     * @param {Object} directions\n     * @param {Boolean} [directions.top]\n     * @param {Boolean} [directions.bottom]\n     * @param {Boolean} [directions.left]\n     * @param {Boolean} [directions.right]\n     *\n     * @param {Region} [region] the region to expand to, defaults to the document region\n     * @return {Region} this region\n     */\n    expand: function(directions, region){\n        var docRegion = region || REGION.getDocRegion()\n        var list      = []\n        var direction\n        var before = this._before()\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            list.push(direction)\n        }\n\n        copyList(docRegion, this, list)\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Returns a clone of this region\n     * @return {Region} A new region, with the same position and dimension as this region\n     */\n    clone: function(){\n        return new REGION({\n                    top    : this.top,\n                    left   : this.left,\n                    right  : this.right,\n                    bottom : this.bottom\n                })\n    },\n\n    /**\n     * Returns true if this region contains the given point\n     * @param {Number/Object} x the x coordinate of the point\n     * @param {Number} [y] the y coordinate of the point\n     *\n     * @return {Boolean} true if this region constains the given point, false otherwise\n     */\n    containsPoint: function(x, y){\n        if (arguments.length == 1){\n            y = x.y\n            x = x.x\n        }\n\n        return this.left <= x  &&\n               x <= this.right &&\n               this.top <= y   &&\n               y <= this.bottom\n    },\n\n    /**\n     *\n     * @param region\n     *\n     * @return {Boolean} true if this region contains the given region, false otherwise\n     */\n    containsRegion: function(region){\n        return this.containsPoint(region.left, region.top)    &&\n               this.containsPoint(region.right, region.bottom)\n    },\n\n    /**\n     * Returns an object with the difference for {top, bottom} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {top,bottom}\n     */\n    diffHeight: function(region){\n        return this.diff(region, {top: true, bottom: true})\n    },\n\n    /**\n     * Returns an object with the difference for {left, right} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {left,right}\n     */\n    diffWidth: function(region){\n        return this.diff(region, {left: true, right: true})\n    },\n\n    /**\n     * Returns an object with the difference in sizes for the given directions, between this and region\n     *\n     * @param  {Region} region     The region to use for diff\n     * @param  {Object} directions An object with the directions to diff. Can have any of the following keys:\n     *  * left\n     *  * right\n     *  * top\n     *  * bottom\n     *\n     * @return {Object} and object with the same keys as the directions object, but the values being the\n     * differences between this region and the given region\n     */\n    diff: function(region, directions){\n        var result = {}\n        var dirName\n\n        for (dirName in directions) if ( hasOwn(directions, dirName) ) {\n            result[dirName] = this[dirName] - region[dirName]\n        }\n\n        return result\n    },\n\n    /**\n     * Returns the position, in {left,top} properties, of this region\n     *\n     * @return {Object} {left,top}\n     */\n    getPosition: function(){\n        return {\n            left: this.left,\n            top : this.top\n        }\n    },\n\n    /**\n     * Returns the point at the given position from this region.\n     *\n     * @param {String} position Any of:\n     *\n     *  * 'cx' - See {@link #getPointXCenter}\n     *  * 'cy' - See {@link #getPointYCenter}\n     *  * 'b'  - See {@link #getPointBottom}\n     *  * 'bc' - See {@link #getPointBottomCenter}\n     *  * 'l'  - See {@link #getPointLeft}F\n     *  * 'lc' - See {@link #getPointLeftCenter}\n     *  * 't'  - See {@link #getPointTop}\n     *  * 'tc' - See {@link #getPointTopCenter}\n     *  * 'r'  - See {@link #getPointRight}\n     *  * 'rc' - See {@link #getPointRightCenter}\n     *  * 'c'  - See {@link #getPointCenter}\n     *  * 'tl' - See {@link #getPointTopLeft}\n     *  * 'bl' - See {@link #getPointBottomLeft}\n     *  * 'br' - See {@link #getPointBottomRight}\n     *  * 'tr' - See {@link #getPointTopRight}\n     *\n     * @param {Boolean} asLeftTop\n     *\n     * @return {Object} either an object with {x,y} or {left,top} if asLeftTop is true\n     */\n    getPoint: function(position, asLeftTop){\n\n        //<debug>\n        if (!POINT_POSITIONS[position]) {\n            console.warn('The position ', position, ' could not be found! Available options are tl, bl, tr, br, l, r, t, b.');\n        }\n        //</debug>\n\n        var method = 'getPoint' + POINT_POSITIONS[position],\n            result = this[method]()\n\n        if (asLeftTop){\n            return {\n                left : result.x,\n                top  : result.y\n            }\n        }\n\n        return result\n    },\n\n    /**\n     * Returns a point with x = null and y being the middle of the left region segment\n     * @return {Object} {x,y}\n     */\n    getPointYCenter: function(){\n        return { x: null, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x being the middle of the top region segment\n     * @return {Object} {x,y}\n     */\n    getPointXCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: null }\n    },\n\n    /**\n     * Returns a point with x = null and y the region top position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointTop: function(){\n        return { x: null, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region top segment\n     * @return {Object} {x,y}\n     */\n    getPointTopCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the top-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopLeft: function(){\n        return { x: this.left, y: this.top}\n    },\n\n    /**\n     * Returns a point that is the top-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopRight: function(){\n        return { x: this.right, y: this.top}\n    },\n\n    /**\n     * Returns a point with x = null and y the region bottom position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointBottom: function(){\n        return { x: null, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region bottom segment\n     * @return {Object} {x,y}\n     */\n    getPointBottomCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the bottom-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomLeft: function(){\n        return { x: this.left, y: this.bottom}\n    },\n\n    /**\n     * Returns a point that is the bottom-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomRight: function(){\n        return { x: this.right, y: this.bottom}\n    },\n\n    /**\n     * Returns a point with y = null and x the region left position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointLeft: function(){\n        return { x: this.left, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region left segment\n     * @return {Object} {x,y}\n     */\n    getPointLeftCenter: function(){\n        return { x: this.left, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x the region right position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointRight: function(){\n        return { x: this.right, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region right segment\n     * @return {Object} {x,y}\n     */\n    getPointRightCenter: function(){\n        return { x: this.right, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point that is the center of the region\n     * @return {Object} {x,y}\n     */\n    getPointCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * @return {Number} returns the height of the region\n     */\n    getHeight: function(){\n        return this.bottom - this.top\n    },\n\n    /**\n     * @return {Number} returns the width of the region\n     */\n    getWidth: function(){\n        return this.right - this.left\n    },\n\n    /**\n     * @return {Number} returns the top property of the region\n     */\n    getTop: function(){\n        return this.top\n    },\n\n    /**\n     * @return {Number} returns the left property of the region\n     */\n    getLeft: function(){\n        return this.left\n    },\n\n    /**\n     * @return {Number} returns the bottom property of the region\n     */\n    getBottom: function(){\n        return this.bottom\n    },\n\n    /**\n     * @return {Number} returns the right property of the region\n     */\n    getRight: function(){\n        return this.right\n    },\n\n    /**\n     * Returns the area of the region\n     * @return {Number} the computed area\n     */\n    getArea: function(){\n        return this.getWidth() * this.getHeight()\n    },\n\n    constrainTo: function(contrain){\n        var intersect = this.getIntersection(contrain)\n        var shift\n\n        if (!intersect || !intersect.equals(this)){\n\n            var contrainWidth  = contrain.getWidth(),\n                contrainHeight = contrain.getHeight()\n\n            if (this.getWidth() > contrainWidth){\n                this.left = contrain.left\n                this.setWidth(contrainWidth)\n            }\n\n            if (this.getHeight() > contrainHeight){\n                this.top = contrain.top\n                this.setHeight(contrainHeight)\n            }\n\n            shift = {}\n\n            if (this.right > contrain.right){\n                shift.left = contrain.right - this.right\n            }\n\n            if (this.bottom > contrain.bottom){\n                shift.top = contrain.bottom - this.bottom\n            }\n\n            if (this.left < contrain.left){\n                shift.left = contrain.left - this.left\n            }\n\n            if (this.top < contrain.top){\n                shift.top = contrain.top - this.top\n            }\n\n            this.shift(shift)\n\n            return true\n        }\n\n        return false\n    },\n\n    __IS_REGION: true\n\n    /**\n     * @property {Number} top\n     */\n\n    /**\n     * @property {Number} right\n     */\n\n    /**\n     * @property {Number} bottom\n     */\n\n    /**\n     * @property {Number} left\n     */\n\n    /**\n     * @property {Number} [0] the top property\n     */\n\n    /**\n     * @property {Number} [1] the left property\n     */\n\n    /**\n     * @method getIntersection\n     * Returns a region that is the intersection of this region and the given region\n     * @param  {Region} region The region to intersect with\n     * @return {Region}        The intersection region\n     */\n\n    /**\n     * @method getUnion\n     * Returns a region that is the union of this region with the given region\n     * @param  {Region} region  The region to make union with\n     * @return {Region}        The union region. The smallest region that contains both this and the given region.\n     */\n\n}, REGION.prototype)\n\nObject.defineProperties(REGION.prototype, {\n    width: {\n        get: function(){\n            return this.getWidth()\n        },\n        set: function(width){\n            return this.setWidth(width)\n        }\n    },\n    height: {\n        get: function(){\n            return this.getHeight()\n        },\n        set: function(height){\n            return this.setHeight(height)\n        }\n    }\n})\n\nrequire('./statics')(REGION)\n\nmodule.exports = REGION"
    },
    {
      "id": 30,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
      "name": "/usr/lib/~/react-menus/lib/index.js",
      "size": 350,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
      "profile": {
        "factory": 268,
        "building": 145
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 10,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/ColumnFilter.js",
          "module": "./src/ColumnFilter.js",
          "moduleName": "./src/ColumnFilter.js",
          "type": "cjs require",
          "userRequest": "react-menus",
          "loc": "4:16-38"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "react-menus",
          "loc": "5:36-58"
        },
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "react-menus",
          "loc": "8:16-38"
        }
      ],
      "source": "'use strict';\n\nvar MenuClass = require('./Menu')\n\nvar MenuItem      = require('./MenuItem')\nvar MenuItemCell  = require('./MenuItemCell')\nvar MenuSeparator = require('./MenuSeparator')\n\nMenuClass.Item      = MenuItem\nMenuClass.Item.Cell = MenuItemCell\nMenuClass.ItemCell  = MenuItemCell\nMenuClass.Separator = MenuSeparator\n\nmodule.exports = MenuClass"
    },
    {
      "id": 31,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
      "name": "./~/clone/clone.js",
      "size": 3700,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
      "profile": {
        "factory": 162,
        "building": 164
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 13,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Header/index.jsx",
          "module": "./src/Header/index.jsx",
          "moduleName": "./src/Header/index.jsx",
          "type": "cjs require",
          "userRequest": "clone",
          "loc": "7:14-30"
        }
      ],
      "source": "'use strict';\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n// shim for Node's 'util' package\n// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/).\nvar util = {\n  isArray: function (ar) {\n    return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]');\n  },\n  isDate: function (d) {\n    return typeof d === 'object' && objectToString(d) === '[object Date]';\n  },\n  isRegExp: function (re) {\n    return typeof re === 'object' && objectToString(re) === '[object RegExp]';\n  },\n  getRegExpFlags: function (re) {\n    var flags = '';\n    re.global && (flags += 'g');\n    re.ignoreCase && (flags += 'i');\n    re.multiline && (flags += 'm');\n    return flags;\n  }\n};\n\n\nif (typeof module === 'object')\n  module.exports = clone;\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n*/\n\nfunction clone(parent, circular, depth, prototype) {\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth == 0)\n      return parent;\n\n    var child;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (util.isArray(parent)) {\n      child = [];\n    } else if (util.isRegExp(parent)) {\n      child = new RegExp(parent.source, util.getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (util.isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      child = new Buffer(parent.length);\n      parent.copy(child);\n      return child;\n    } else {\n      if (typeof prototype == 'undefined') child = Object.create(Object.getPrototypeOf(parent));\n      else child = Object.create(prototype);\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    for (var i in parent) {\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n"
    },
    {
      "id": 32,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
      "name": "./~/drag-helper/index.js",
      "size": 4181,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
      "profile": {
        "factory": 240,
        "building": 129,
        "dependencies": 141
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 23,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnDrag.js",
          "module": "./src/Header/setupColumnDrag.js",
          "moduleName": "./src/Header/setupColumnDrag.js",
          "type": "cjs require",
          "userRequest": "drag-helper",
          "loc": "4:17-39"
        },
        {
          "moduleId": 24,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/src/Header/setupColumnResize.js",
          "module": "./src/Header/setupColumnResize.js",
          "moduleName": "./src/Header/setupColumnResize.js",
          "type": "cjs require",
          "userRequest": "drag-helper",
          "loc": "4:17-39"
        }
      ],
      "source": "'use strict'\n\nvar F      = require('functionally')\nvar copy   = require('copy-utils').copy\nvar Region = require('region-align')\n\nvar Helper = function(config){\n    this.config = config\n}\n\nfunction emptyFn(){}\n\ncopy({\n\n    /**\n     * Should be called on a mousedown event\n     *\n     * @param  {Event} event\n     * @return {[type]}       [description]\n     */\n    initDrag: function(event) {\n\n        this.onDragInit(event)\n\n        var onDragStart = F.once(this.onDragStart, this)\n\n        var mouseMoveListener = (function(event){\n            onDragStart(event)\n            this.onDrag(event)\n        }).bind(this)\n\n        var mouseUpListener = (function(event){\n\n            this.onDrop(event)\n\n            window.removeEventListener('mousemove', mouseMoveListener)\n            window.removeEventListener('mouseup', mouseUpListener)\n        }).bind(this)\n\n        window.addEventListener('mousemove', mouseMoveListener, false)\n        window.addEventListener('mouseup', mouseUpListener)\n    },\n\n    onDragInit: function(event){\n\n        var config = {\n            diff: {\n                left: 0,\n                top : 0\n            }\n        }\n        this.state = {\n            config: config\n        }\n\n        var initPageCoords = this.state.initPageCoords = {\n            pageX: event.pageX,\n            pageY: event.pageY\n        }\n\n        if (this.config.region){\n            this.state.initialRegion = Region.from(this.config.region)\n            this.state.dragRegion =\n                config.dragRegion =\n                    this.state.initialRegion.clone()\n        }\n        if (this.config.constrainTo){\n            this.state.constrainTo = Region.from(this.config.constrainTo)\n        }\n\n        this.callConfig('onDragInit', event)\n    },\n\n    /**\n     * Called when the first mousemove event occurs after drag is initialized\n     * @param  {Event} event\n     */\n    onDragStart: function(event){\n        this.state.didDrag = this.state.config.didDrag = true\n        this.callConfig('onDragStart', event)\n    },\n\n    /**\n     * Called on all mousemove events after drag is initialized.\n     *\n     * @param  {Event} event\n     */\n    onDrag: function(event){\n\n        var config = this.state.config\n        var args   = [event, config]\n\n        var initPageCoords = this.state.initPageCoords\n\n        var diff = config.diff = {\n            left: event.pageX - initPageCoords.pageX,\n            top : event.pageY - initPageCoords.pageY\n        }\n\n        if (this.state.initialRegion){\n            var dragRegion = config.dragRegion\n\n            //set the dragRegion to initial coords\n            dragRegion.set(this.state.initialRegion)\n\n            //shift it to the new position\n            dragRegion.shift(diff)\n\n            if (this.state.constrainTo){\n                //and finally constrain it if it's the case\n                dragRegion.constrainTo(this.state.constrainTo)\n\n                diff.left = dragRegion.left - this.state.initialRegion.left\n                diff.top  = dragRegion.top - this.state.initialRegion.top\n            }\n\n            config.dragRegion = dragRegion\n        }\n\n        this.callConfig('onDrag', event)\n    },\n\n    /**\n     * Called on the mouseup event on window\n     *\n     * @param  {Event} event\n     */\n    onDrop: function(event){\n        this.callConfig('onDrop', event)\n\n        this.state = null\n    },\n\n    callConfig: function(fnName, event){\n        var config = this.state.config\n        var args   = [event, config]\n\n        var fn = this.config[fnName]\n\n        if (fn){\n            fn.apply(this, args)\n        }\n    }\n\n}, Helper.prototype)\n\nmodule.exports = function(event, config){\n\n    if (config.scope){\n        var skippedKeys = {\n            scope      : 1,\n            region     : 1,\n            constrainTo: 1\n        }\n\n        Object.keys(config).forEach(function(key){\n            var value = config[key]\n\n            if (key in skippedKeys){\n                return\n            }\n\n            if (typeof value == 'function'){\n                config[key] = value.bind(config.scope)\n            }\n        })\n    }\n    var helper = new Helper(config)\n\n    helper.initDrag(event)\n\n    return helper\n\n}"
    },
    {
      "id": 33,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/inherits.js",
      "name": "./~/region/src/inherits.js",
      "size": 315,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 72,
        "building": 121
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./inherits",
          "loc": "10:15-36"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value       : ctor,\n            enumerable  : false,\n            writable    : true,\n            configurable: true\n        }\n    })\n}"
    },
    {
      "id": 34,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/validate.js",
      "name": "./~/region/src/validate.js",
      "size": 583,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 73,
        "building": 121
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./validate",
          "loc": "11:15-36"
        },
        {
          "moduleId": 35,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
          "module": "./~/region/src/statics.js",
          "moduleName": "./~/region/src/statics.js",
          "type": "cjs require",
          "userRequest": "./validate",
          "loc": "4:15-36"
        }
      ],
      "source": "'use strict';\n\n/**\n * @static\n * Returns true if the given region is valid, false otherwise.\n * @param  {Region} region The region to check\n * @return {Boolean}        True, if the region is valid, false otherwise.\n * A region is valid if\n *  * left <= right  &&\n *  * top  <= bottom\n */\nmodule.exports = function validate(region){\n\n    var isValid = true\n\n    if (region.right < region.left){\n        isValid = false\n        region.right = region.left\n    }\n\n    if (region.bottom < region.top){\n        isValid = false\n        region.bottom = region.top\n    }\n\n    return isValid\n}"
    },
    {
      "id": 35,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/statics.js",
      "name": "./~/region/src/statics.js",
      "size": 6712,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 73,
        "building": 135,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./statics",
          "loc": "1032:0-20"
        }
      ],
      "source": "'use strict';\n\nvar hasOwn   = require('hasown')\nvar VALIDATE = require('./validate')\n\nmodule.exports = function(REGION){\n\n    var MAX = Math.max\n    var MIN = Math.min\n\n    var statics = {\n        init: function(){\n            var exportAsNonStatic = {\n                getIntersection      : true,\n                getIntersectionArea  : true,\n                getIntersectionHeight: true,\n                getIntersectionWidth : true,\n                getUnion             : true\n            }\n            var thisProto = REGION.prototype\n            var newName\n\n            var exportHasOwn = hasOwn(exportAsNonStatic)\n            var methodName\n\n            for (methodName in exportAsNonStatic) if (exportHasOwn(methodName)) {\n                newName = exportAsNonStatic[methodName]\n                if (typeof newName != 'string'){\n                    newName = methodName\n                }\n\n                ;(function(proto, methodName, protoMethodName){\n\n                    proto[methodName] = function(region){\n                        //<debug>\n                        if (!REGION[protoMethodName]){\n                            console.warn('cannot find method ', protoMethodName,' on ', REGION)\n                        }\n                        //</debug>\n                        return REGION[protoMethodName](this, region)\n                    }\n\n                })(thisProto, newName, methodName);\n            }\n        },\n\n        validate: VALIDATE,\n\n        /**\n         * Returns the region corresponding to the documentElement\n         * @return {Region} The region corresponding to the documentElement. This region is the maximum region visible on the screen.\n         */\n        getDocRegion: function(){\n            return REGION.fromDOM(document.documentElement)\n        },\n\n        from: function(reg){\n            if (reg.__IS_REGION){\n                return reg\n            }\n\n            if (typeof document != 'undefined'){\n                if (typeof HTMLElement != 'undefined' && reg instanceof HTMLElement){\n                    return REGION.fromDOM(reg)\n                }\n\n                if (reg.type && typeof reg.pageX !== 'undefined' && typeof reg.pageY !== 'undefined'){\n                    return REGION.fromEvent(reg)\n                }\n            }\n\n            return REGION(reg)\n        },\n\n        fromEvent: function(event){\n            return REGION.fromPoint({\n                x: event.pageX,\n                y: event.pageY\n            })\n        },\n\n        fromDOM: function(dom){\n            var rect = dom.getBoundingClientRect()\n            // var docElem = document.documentElement\n            // var win     = window\n\n            // var top  = rect.top + win.pageYOffset - docElem.clientTop\n            // var left = rect.left + win.pageXOffset - docElem.clientLeft\n\n            return new REGION({\n                top   : rect.top,\n                left  : rect.left,\n                bottom: rect.bottom,\n                right : rect.right\n            })\n        },\n\n        /**\n         * @static\n         * Returns a region that is the intersection of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region/Boolean}        The intersection region or false if no intersection found\n         */\n        getIntersection: function(first, second){\n\n            var area = this.getIntersectionArea(first, second)\n\n            if (area){\n                return new REGION(area)\n            }\n\n            return false\n        },\n\n        getIntersectionWidth: function(first, second){\n            var minRight  = MIN(first.right, second.right)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (maxLeft < minRight){\n                return minRight  - maxLeft\n            }\n\n            return 0\n        },\n\n        getIntersectionHeight: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minBottom = MIN(first.bottom,second.bottom)\n\n            if (maxTop  < minBottom){\n                return minBottom - maxTop\n            }\n\n            return 0\n        },\n\n        getIntersectionArea: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minRight  = MIN(first.right, second.right)\n            var minBottom = MIN(first.bottom,second.bottom)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (\n                    maxTop  < minBottom &&\n                    maxLeft < minRight\n                ){\n                return {\n                    top    : maxTop,\n                    right  : minRight,\n                    bottom : minBottom,\n                    left   : maxLeft,\n\n                    width  : minRight  - maxLeft,\n                    height : minBottom - maxTop\n                }\n            }\n\n            return false\n        },\n\n        /**\n         * @static\n         * Returns a region that is the union of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region}        The union region. The smallest region that contains both given regions.\n         */\n        getUnion: function(first, second){\n            var top    = MIN(first.top,   second.top)\n            var right  = MAX(first.right, second.right)\n            var bottom = MAX(first.bottom,second.bottom)\n            var left   = MIN(first.left,  second.left)\n\n            return new REGION(top, right, bottom, left)\n        },\n\n        /**\n         * @static\n         * Returns a region. If the reg argument is a region, returns it, otherwise return a new region built from the reg object.\n         *\n         * @param  {Region} reg A region or an object with either top, left, bottom, right or\n         * with top, left, width, height\n         * @return {Region} A region\n         */\n        getRegion: function(reg){\n            return REGION.from(reg)\n        },\n\n        /**\n         * Creates a region that corresponds to a point.\n         *\n         * @param  {Object} xy The point\n         * @param  {Number} xy.x\n         * @param  {Number} xy.y\n         *\n         * @return {Region}    The new region, with top==xy.y, bottom = xy.y and left==xy.x, right==xy.x\n         */\n        fromPoint: function(xy){\n            return new REGION({\n                        top    : xy.y,\n                        bottom : xy.y,\n                        left   : xy.x,\n                        right  : xy.x\n                    })\n        }\n    }\n\n    Object.keys(statics).forEach(function(key){\n        REGION[key] = statics[key]\n    })\n\n    REGION.init()\n}"
    },
    {
      "id": 36,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/toLowerFirst.js",
      "name": "./~/ustring/src/toLowerFirst.js",
      "size": 132,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 176,
        "building": 138
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/toLowerFirst",
          "loc": "2:23-52"
        }
      ],
      "source": "module.exports = function(str){\n    return str.length?\n            str.charAt(0).toLowerCase() + str.substring(1):\n            str\n}"
    },
    {
      "id": 37,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/toUpperFirst.js",
      "name": "./~/ustring/src/toUpperFirst.js",
      "size": 164,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 177,
        "building": 135
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/toUpperFirst",
          "loc": "3:23-52"
        },
        {
          "moduleId": 42,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
          "module": "./~/ustring/src/humanize.js",
          "moduleName": "./~/ustring/src/humanize.js",
          "type": "cjs require",
          "userRequest": "./toUpperFirst",
          "loc": "5:19-44"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return value.length?\n                value.charAt(0).toUpperCase() + value.substring(1):\n                value\n}"
    },
    {
      "id": 38,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/separate.js",
      "name": "./~/ustring/src/separate.js",
      "size": 468,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 176,
        "building": 144
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/separate",
          "loc": "4:23-48"
        },
        {
          "moduleId": 42,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
          "module": "./~/ustring/src/humanize.js",
          "moduleName": "./~/ustring/src/humanize.js",
          "type": "cjs require",
          "userRequest": "./separate",
          "loc": "3:19-40"
        },
        {
          "moduleId": 43,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenate.js",
          "module": "./~/ustring/src/hyphenate.js",
          "moduleName": "./~/ustring/src/hyphenate.js",
          "type": "cjs require",
          "userRequest": "./separate",
          "loc": "3:15-36"
        }
      ],
      "source": "'use strict'\n\nvar doubleColonRe      = /::/g\nvar upperToLowerRe     = /([A-Z]+)([A-Z][a-z])/g\nvar lowerToUpperRe     = /([a-z\\d])([A-Z])/g\nvar underscoreToDashRe = /_/g\n\nmodule.exports = function(name, separator){\n\n   return name?\n           name.replace(doubleColonRe, '/')\n                .replace(upperToLowerRe, '$1_$2')\n                .replace(lowerToUpperRe, '$1_$2')\n                .replace(underscoreToDashRe, separator || '-')\n            :\n            ''\n}"
    },
    {
      "id": 39,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/stripWhitespace.js",
      "name": "./~/ustring/src/stripWhitespace.js",
      "size": 120,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 177,
        "building": 144
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/stripWhitespace",
          "loc": "5:23-55"
        }
      ],
      "source": "var RE = /\\s/g\n\nmodule.exports = function(str){\n    if (!str){\n        return ''\n    }\n\n    return str.replace(RE, '')\n}"
    },
    {
      "id": 40,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/compactWhitespace.js",
      "name": "./~/ustring/src/compactWhitespace.js",
      "size": 129,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 177,
        "building": 145
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/compactWhitespace",
          "loc": "6:23-57"
        }
      ],
      "source": "var RE = /\\s+/g\n\nmodule.exports = function(str){\n    if (!str){\n        return ''\n    }\n\n    return str.trim().replace(RE, ' ')\n}"
    },
    {
      "id": 41,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
      "name": "./~/ustring/src/camelize.js",
      "size": 250,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 178,
        "building": 146
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/camelize",
          "loc": "7:23-48"
        },
        {
          "moduleId": 42,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
          "module": "./~/ustring/src/humanize.js",
          "moduleName": "./~/ustring/src/humanize.js",
          "type": "cjs require",
          "userRequest": "./camelize",
          "loc": "4:19-40"
        }
      ],
      "source": "'use strict'\n\nvar toCamelFn = function(str, letter){\n       return letter ? letter.toUpperCase(): ''\n   }\n\nvar hyphenRe = require('./hyphenRe')\n\nmodule.exports = function(str){\n   return str?\n          str.replace(hyphenRe, toCamelFn):\n          ''\n}"
    },
    {
      "id": 42,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
      "name": "./~/ustring/src/humanize.js",
      "size": 526,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 177,
        "building": 150,
        "dependencies": 89
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/humanize",
          "loc": "8:23-48"
        }
      ],
      "source": "'use strict'\n\nvar separate     = require('./separate')\nvar camelize     = require('./camelize')\nvar toUpperFirst = require('./toUpperFirst')\nvar hyphenRe     = require('./hyphenRe')\n\nfunction toLowerAndSpace(str, letter){\n    return letter? ' ' + letter.toLowerCase(): ' '\n}\n\nmodule.exports = function(name, config){\n\n    var str = config && config.capitalize?\n                    separate(camelize(name), ' '):\n                    separate(name, ' ').replace(hyphenRe, toLowerAndSpace)\n\n    return toUpperFirst(str.trim())\n}\n"
    },
    {
      "id": 43,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenate.js",
      "name": "./~/ustring/src/hyphenate.js",
      "size": 125,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 178,
        "building": 158,
        "dependencies": 51
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/hyphenate",
          "loc": "9:23-49"
        }
      ],
      "source": "'use strict'\n\nvar separate = require('./separate')\n\nmodule.exports = function(name){\n   return separate(name).toLowerCase()\n}"
    },
    {
      "id": 44,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/endsWith.js",
      "name": "./~/ustring/src/endsWith.js",
      "size": 352,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 179,
        "building": 161
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/endsWith",
          "loc": "10:23-48"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(str, endsWith){\n\n    str += ''\n\n    if (!str){\n        return typeof endsWith == 'string'?\n                    !endsWith:\n                    false\n    }\n\n    endsWith += ''\n\n    if (str.length < endsWith.length){\n        return false\n    }\n\n    return str.lastIndexOf(endsWith) == str.length - endsWith.length\n}"
    },
    {
      "id": 45,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
      "name": "./~/ustring/src/is/index.js",
      "size": 197,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
      "profile": {
        "factory": 179,
        "building": 162
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 27,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/index.js",
          "module": "./~/ustring/index.js",
          "moduleName": "./~/ustring/index.js",
          "type": "cjs require",
          "userRequest": "./src/is",
          "loc": "12:8-27"
        }
      ],
      "source": "module.exports = {\n    alphanum: require('./alphanum'),\n    match   : require('./match'),\n    guid   : require('./guid'),\n    // email   : require('./email'),\n    numeric   : require('./numeric')\n}"
    },
    {
      "id": 46,
      "identifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
      "name": "../react-load-mask/lib/Loader.js",
      "size": 1889,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
      "profile": {
        "factory": 314,
        "building": 198,
        "dependencies": 784
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 16,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "type": "cjs require",
          "userRequest": "./Loader",
          "loc": "5:13-32"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nmodule.exports = React.createClass({\n\n    displayName: 'Loader',\n\n    getDefaultProps: function(){\n        return {\n            defaultStyle: {\n                margin: 'auto',\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                bottom: 0,\n                right: 0,\n            },\n            defaultClassName: 'loader',\n            size: 40,\n        }\n    },\n\n    render: function() {\n        var props = assign({}, this.props)\n\n        this.prepareStyle(props)\n\n        props.className = props.className || ''\n        props.className += ' ' + props.defaultClassName\n\n        return React.DOM.div(props,\n            React.createElement(\"div\", {className: \"loadbar loadbar-1\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-2\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-3\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-4\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-5\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-6\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-7\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-8\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-9\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-10\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-11\"}),\n            React.createElement(\"div\", {className: \"loadbar loadbar-12\"})\n        )\n    },\n\n    prepareStyle: function(props){\n\n        var style = {}\n\n        assign(style, props.defaultStyle)\n        assign(style, props.style)\n\n        style.width = props.size\n        style.height = props.size\n\n        props.style = style\n    }\n})"
    },
    {
      "id": 47,
      "identifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/node_modules/object-assign/index.js",
      "name": "../react-load-mask/~/object-assign/index.js",
      "size": 484,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
      "profile": {
        "factory": 393,
        "building": 101
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 16,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/local/lib/node_modules/react-load-mask/lib/index.js",
          "module": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "moduleName": "/usr/local/lib/~/react-load-mask/lib/index.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 46,
          "moduleIdentifier": "/home/radu/code/react-load-mask/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-load-mask/lib/Loader.js",
          "module": "../react-load-mask/lib/Loader.js",
          "moduleName": "../react-load-mask/lib/Loader.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        }
      ],
      "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
    },
    {
      "id": 48,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/react-prefixr/stylePrefixr.js",
      "name": "./~/react-prefixr/stylePrefixr.js",
      "size": 1583,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
      "profile": {
        "factory": 300,
        "building": 154
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 25,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?insertPragma=React.DOM&harmony!/home/radu/code/react-datagrid/src/Row/index.jsx",
          "module": "./src/Row/index.jsx",
          "moduleName": "./src/Row/index.jsx",
          "type": "cjs require",
          "userRequest": "react-prefixr",
          "loc": "10:16-40"
        }
      ],
      "source": "'use strict';\n\nvar el;\n\nif(!!global.document){\n  el = global.document.createElement('div');\n}\n\nvar prefixes = [\"ms\", \"Moz\", \"Webkit\", \"O\"];\nvar properties = [\n  'userSelect',\n  'transform',\n  'transition',\n  'transformOrigin',\n  'transformStyle',\n  'transitionProperty',\n  'transitionDuration',\n  'transitionTimingFunction',\n  'transitionDelay',\n  'borderImage',\n  'borderImageSlice',\n  'boxShadow',\n  'backgroundClip',\n  'backfaceVisibility',\n  'perspective',\n  'perspectiveOrigin',\n  'animation',\n  'animationDuration',\n  'animationName',\n  'animationDelay',\n  'animationDirection',\n  'animationIterationCount',\n  'animationTimingFunction',\n  'animationPlayState',\n  'animationFillMode',\n  'appearance'\n];\n\nfunction GetVendorPrefix(property) {\n  if(properties.indexOf(property) == -1 || !global.document || typeof el.style[property] !== 'undefined'){\n    return property;\n  }\n\n  property = property[0].toUpperCase() + property.slice(1);\n  var temp;\n\n  for(var i = 0; i < prefixes.length; i++){\n    temp = prefixes[i] + property;\n    if(typeof el.style[temp] !== 'undefined'){\n      prefixes = [prefixes[i]]; // we only need to check this one prefix from now on.\n      return temp;\n    }\n  }\n  return property[0].toLowerCase() + property.slice(1);\n}\n\n\nmodule.exports = (function(){\n  var cache = {};\n  return function(obj){\n    if(!global.document){\n      return obj;\n    }\n\n    var result = {};\n\n    for(var key in obj){\n      if(cache[key] === undefined){\n        cache[key] = GetVendorPrefix(key);\n      }\n      result[cache[key]] = obj[key];\n    }\n\n    return result;\n  };\n})();"
    },
    {
      "id": 49,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
      "name": "./~/newify/index.js",
      "size": 161,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 190,
        "building": 152
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "newify",
          "loc": "4:16-33"
        },
        {
          "moduleId": 89,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
          "module": "./~/functionally/src/newify.js",
          "moduleName": "./~/functionally/src/newify.js",
          "type": "cjs require",
          "userRequest": "newify",
          "loc": "3:13-30"
        }
      ],
      "source": "var getInstantiatorFunction = require('./getInstantiatorFunction')\n\nmodule.exports = function(fn, args){\n\treturn getInstantiatorFunction(args.length)(fn, args)\n}"
    },
    {
      "id": 50,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "name": "./~/copy-utils/index.js",
      "size": 6752,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 190,
        "building": 163
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "copy-utils",
          "loc": "5:16-37"
        },
        {
          "moduleId": 32,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "module": "./~/drag-helper/index.js",
          "moduleName": "./~/drag-helper/index.js",
          "type": "cjs require",
          "userRequest": "copy-utils",
          "loc": "4:13-34"
        }
      ],
      "source": "module.exports = function(){\n\n    'use strict'\n\n    var HAS_OWN       = Object.prototype.hasOwnProperty,\n        STR_OBJECT    = 'object',\n        STR_UNDEFINED = 'undefined'\n\n    return {\n\n        /**\n         * Copies all properties from source to destination\n         *\n         *      copy({name: 'jon',age:5}, this);\n         *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copy: require('./copy'),\n\n        /**\n         * Copies all properties from source to destination, if the property does not exist into the destination\n         *\n         *      copyIf({name: 'jon',age:5}, {age:7})\n         *      // => { name: 'jon', age: 7}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copyIf: require('./copyIf'),\n\n        /**\n         * Copies all properties from source to a new object, with the given value. This object is returned\n         *\n         *      copyAs({name: 'jon',age:5})\n         *      // => the resulting object will have the 'name' and 'age' properties set to 1\n         *\n         * @param {Object} source\n         * @param {Object/Number/String} [value=1]\n         *\n         * @return {Object} destination\n         */\n        copyAs: function(source, value){\n\n            var destination = {}\n\n            value = value || 1\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) ) {\n                    destination[i] = value\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies all properties named in the list, from source to destination\n         *\n         *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n         *      // => {name: 'jon', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyList: require('./copyList'),\n\n        /**\n         * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n         *\n         *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n         *      // => {name: 'jon', age: 10}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyListIf: require('./copyListIf'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination\n         *\n         *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n         *      // => {name: 'jon', age: 5, theYear: 2006}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeys: require('./copyKeys'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination,\n         * but only if the property does not already exist in the destination object\n         *\n         *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n         *      // => {aname: 'test', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeysIf: require('./copyKeysIf'),\n\n        copyExceptKeys: function(source, destination, exceptKeys){\n            destination = destination || {}\n            exceptKeys  = exceptKeys  || {}\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) && !HAS_OWN.call(exceptKeys, i) ) {\n\n                    destination[i] = source[i]\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies the named keys from source to destination.\n         * For the keys that are functions, copies the functions bound to the source\n         *\n         * @param  {Object} source      The source object\n         * @param  {Object} destination The target object\n         * @param  {Object} namedKeys   An object with the names of the keys to copy The values from the keys in this object\n         *                              need to be either numbers or booleans if you want to copy the property under the same name,\n         *                              or a string if you want to copy the property under a different name\n         * @return {Object}             Returns the destination object\n         */\n        bindCopyKeys: function(source, destination, namedKeys){\n            if (arguments.length == 2){\n                namedKeys = destination\n                destination = null\n            }\n\n            destination = destination || {}\n\n            if (\n                       source != null && typeof source    === STR_OBJECT &&\n                    namedKeys != null && typeof namedKeys === STR_OBJECT\n                ) {\n\n\n                var typeOfNamedProperty,\n                    namedPropertyValue,\n\n                    typeOfSourceProperty,\n                    propValue\n\n\n                for(var propName in namedKeys) if (HAS_OWN.call(namedKeys, propName)) {\n\n                    namedPropertyValue = namedKeys[propName]\n                    typeOfNamedProperty = typeof namedPropertyValue\n\n                    propValue = source[propName]\n                    typeOfSourceProperty = typeof propValue\n\n\n                    if ( typeOfSourceProperty !== STR_UNDEFINED ) {\n\n                        destination[\n                            typeOfNamedProperty == 'string'?\n                                            namedPropertyValue :\n                                            propName\n                            ] = typeOfSourceProperty == 'function' ?\n                                            propValue.bind(source):\n                                            propValue\n                    }\n                }\n            }\n\n            return destination\n        }\n    }\n\n}()"
    },
    {
      "id": 51,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
      "name": "./~/i-s/index.js",
      "size": 33,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 190,
        "building": 164
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "i-s",
          "loc": "8:16-30"
        },
        {
          "moduleId": 58,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/numeric.js",
          "module": "./~/ustring/src/is/numeric.js",
          "moduleName": "./~/ustring/src/is/numeric.js",
          "type": "cjs require",
          "userRequest": "i-s",
          "loc": "3:17-31"
        }
      ],
      "source": "module.exports = require('./src')"
    },
    {
      "id": 52,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/events/events.js",
      "name": "(webpack)/~/node-libs-browser/~/events/events.js",
      "size": 8251,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
      "profile": {
        "factory": 189,
        "building": 204
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 29,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region/src/index.js",
          "module": "./~/region/src/index.js",
          "moduleName": "./~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "events",
          "loc": "9:19-36"
        }
      ],
      "source": "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      }\n      throw TypeError('Uncaught, unspecified \"error\" event.');\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        len = arguments.length;\n        args = new Array(len - 1);\n        for (i = 1; i < len; i++)\n          args[i - 1] = arguments[i];\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    len = arguments.length;\n    args = new Array(len - 1);\n    for (i = 1; i < len; i++)\n      args[i - 1] = arguments[i];\n\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    var m;\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  var ret;\n  if (!emitter._events || !emitter._events[type])\n    ret = 0;\n  else if (isFunction(emitter._events[type]))\n    ret = 1;\n  else\n    ret = emitter._events[type].length;\n  return ret;\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n"
    },
    {
      "id": 53,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
      "name": "(webpack)/~/node-libs-browser/~/buffer/index.js",
      "size": 28521,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
      "profile": {
        "factory": 198,
        "building": 380,
        "dependencies": 91
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 31,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/clone/clone.js",
          "module": "./~/clone/clone.js",
          "moduleName": "./~/clone/clone.js",
          "type": "cjs require",
          "userRequest": "Buffer",
          "loc": "1:0-122"
        },
        {
          "moduleId": 53,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "type": "cjs require",
          "userRequest": "Buffer",
          "loc": "1:0-122"
        }
      ],
      "source": "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('is-array')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = Buffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar kMaxLength = 0x3fffffff\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Note:\n *\n * - Implementation must support adding new properties to `Uint8Array` instances.\n *   Firefox 4-29 lacked support, fixed in Firefox 30+.\n *   See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *  - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *  - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *    incorrect length in some situations.\n *\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will\n * get the Object implementation, which is slower but will work correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = (function () {\n  try {\n    var buf = new ArrayBuffer(0)\n    var arr = new Uint8Array(buf)\n    arr.foo = function () { return 42 }\n    return 42 === arr.foo() && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n})()\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (subject, encoding, noZero) {\n  if (!(this instanceof Buffer))\n    return new Buffer(subject, encoding, noZero)\n\n  var type = typeof subject\n\n  // Find the length\n  var length\n  if (type === 'number')\n    length = subject > 0 ? subject >>> 0 : 0\n  else if (type === 'string') {\n    if (encoding === 'base64')\n      subject = base64clean(subject)\n    length = Buffer.byteLength(subject, encoding)\n  } else if (type === 'object' && subject !== null) { // assume object is array-like\n    if (subject.type === 'Buffer' && isArray(subject.data))\n      subject = subject.data\n    length = +subject.length > 0 ? Math.floor(+subject.length) : 0\n  } else\n    throw new TypeError('must start with number, buffer, array or string')\n\n  if (this.length > kMaxLength)\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n      'size: 0x' + kMaxLength.toString(16) + ' bytes')\n\n  var buf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Preferred: Return an augmented `Uint8Array` instance for best performance\n    buf = Buffer._augment(new Uint8Array(length))\n  } else {\n    // Fallback: Return THIS instance of Buffer (created by `new`)\n    buf = this\n    buf.length = length\n    buf._isBuffer = true\n  }\n\n  var i\n  if (Buffer.TYPED_ARRAY_SUPPORT && typeof subject.byteLength === 'number') {\n    // Speed optimization -- use set if we're copying from a typed array\n    buf._set(subject)\n  } else if (isArrayish(subject)) {\n    // Treat array-ish objects as a byte array\n    if (Buffer.isBuffer(subject)) {\n      for (i = 0; i < length; i++)\n        buf[i] = subject.readUInt8(i)\n    } else {\n      for (i = 0; i < length; i++)\n        buf[i] = ((subject[i] % 256) + 256) % 256\n    }\n  } else if (type === 'string') {\n    buf.write(subject, 0, encoding)\n  } else if (type === 'number' && !Buffer.TYPED_ARRAY_SUPPORT && !noZero) {\n    for (i = 0; i < length; i++) {\n      buf[i] = 0\n    }\n  }\n\n  return buf\n}\n\nBuffer.isBuffer = function (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b))\n    throw new TypeError('Arguments must be Buffers')\n\n  var x = a.length\n  var y = b.length\n  for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}\n  if (i !== len) {\n    x = a[i]\n    y = b[i]\n  }\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'binary':\n    case 'base64':\n    case 'raw':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function (list, totalLength) {\n  if (!isArray(list)) throw new TypeError('Usage: Buffer.concat(list[, length])')\n\n  if (list.length === 0) {\n    return new Buffer(0)\n  } else if (list.length === 1) {\n    return list[0]\n  }\n\n  var i\n  if (totalLength === undefined) {\n    totalLength = 0\n    for (i = 0; i < list.length; i++) {\n      totalLength += list[i].length\n    }\n  }\n\n  var buf = new Buffer(totalLength)\n  var pos = 0\n  for (i = 0; i < list.length; i++) {\n    var item = list[i]\n    item.copy(buf, pos)\n    pos += item.length\n  }\n  return buf\n}\n\nBuffer.byteLength = function (str, encoding) {\n  var ret\n  str = str + ''\n  switch (encoding || 'utf8') {\n    case 'ascii':\n    case 'binary':\n    case 'raw':\n      ret = str.length\n      break\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      ret = str.length * 2\n      break\n    case 'hex':\n      ret = str.length >>> 1\n      break\n    case 'utf8':\n    case 'utf-8':\n      ret = utf8ToBytes(str).length\n      break\n    case 'base64':\n      ret = base64ToBytes(str).length\n      break\n    default:\n      ret = str.length\n  }\n  return ret\n}\n\n// pre-set for values that may exist in the future\nBuffer.prototype.length = undefined\nBuffer.prototype.parent = undefined\n\n// toString(encoding, start=0, end=buffer.length)\nBuffer.prototype.toString = function (encoding, start, end) {\n  var loweredCase = false\n\n  start = start >>> 0\n  end = end === undefined || end === Infinity ? this.length : end >>> 0\n\n  if (!encoding) encoding = 'utf8'\n  if (start < 0) start = 0\n  if (end > this.length) end = this.length\n  if (end <= start) return ''\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'binary':\n        return binarySlice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase)\n          throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.equals = function (b) {\n  if(!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max)\n      str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  return Buffer.compare(this, b)\n}\n\n// `get` will be removed in Node 0.13+\nBuffer.prototype.get = function (offset) {\n  console.log('.get() is deprecated. Access using array indexes instead.')\n  return this.readUInt8(offset)\n}\n\n// `set` will be removed in Node 0.13+\nBuffer.prototype.set = function (v, offset) {\n  console.log('.set() is deprecated. Access using array indexes instead.')\n  return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; i++) {\n    var byte = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(byte)) throw new Error('Invalid hex string')\n    buf[offset + i] = byte\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)\n  return charsWritten\n}\n\nfunction utf16leWrite (buf, string, offset, length) {\n  var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length, 2)\n  return charsWritten\n}\n\nBuffer.prototype.write = function (string, offset, length, encoding) {\n  // Support both (string, offset, length, encoding)\n  // and the legacy (string, encoding, offset, length)\n  if (isFinite(offset)) {\n    if (!isFinite(length)) {\n      encoding = length\n      length = undefined\n    }\n  } else {  // legacy\n    var swap = encoding\n    encoding = offset\n    offset = length\n    length = swap\n  }\n\n  offset = Number(offset) || 0\n  var remaining = this.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n  encoding = String(encoding || 'utf8').toLowerCase()\n\n  var ret\n  switch (encoding) {\n    case 'hex':\n      ret = hexWrite(this, string, offset, length)\n      break\n    case 'utf8':\n    case 'utf-8':\n      ret = utf8Write(this, string, offset, length)\n      break\n    case 'ascii':\n      ret = asciiWrite(this, string, offset, length)\n      break\n    case 'binary':\n      ret = binaryWrite(this, string, offset, length)\n      break\n    case 'base64':\n      ret = base64Write(this, string, offset, length)\n      break\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      ret = utf16leWrite(this, string, offset, length)\n      break\n    default:\n      throw new TypeError('Unknown encoding: ' + encoding)\n  }\n  return ret\n}\n\nBuffer.prototype.toJSON = function () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  var res = ''\n  var tmp = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; i++) {\n    if (buf[i] <= 0x7F) {\n      res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])\n      tmp = ''\n    } else {\n      tmp += '%' + buf[i].toString(16)\n    }\n  }\n\n  return res + decodeUtf8Char(tmp)\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; i++) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction binarySlice (buf, start, end) {\n  return asciiSlice(buf, start, end)\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; i++) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len;\n    if (start < 0)\n      start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0)\n      end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start)\n    end = start\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    return Buffer._augment(this.subarray(start, end))\n  } else {\n    var sliceLen = end - start\n    var newBuf = new Buffer(sliceLen, undefined, true)\n    for (var i = 0; i < sliceLen; i++) {\n      newBuf[i] = this[i + start]\n    }\n    return newBuf\n  }\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0)\n    throw new RangeError('offset is not uint')\n  if (offset + ext > length)\n    throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUInt8 = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n      ((this[offset + 1] << 16) |\n      (this[offset + 2] << 8) |\n      this[offset + 3])\n}\n\nBuffer.prototype.readInt8 = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80))\n    return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16) |\n      (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n      (this[offset + 1] << 16) |\n      (this[offset + 2] << 8) |\n      (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function (offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n  if (value > max || value < min) throw new TypeError('value is out of bounds')\n  if (offset + ext > buf.length) throw new TypeError('index out of range')\n}\n\nBuffer.prototype.writeUInt8 = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = value\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n  } else objectWriteUInt16(this, value, offset, true)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = value\n  } else objectWriteUInt16(this, value, offset, false)\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = value\n  } else objectWriteUInt32(this, value, offset, true)\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = value\n  } else objectWriteUInt32(this, value, offset, false)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt8 = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = value\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n  } else objectWriteUInt16(this, value, offset, true)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = value\n  } else objectWriteUInt16(this, value, offset, false)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else objectWriteUInt32(this, value, offset, true)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = value\n  } else objectWriteUInt32(this, value, offset, false)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (value > max || value < min) throw new TypeError('value is out of bounds')\n  if (offset + ext > buf.length) throw new TypeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert)\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert)\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function (target, target_start, start, end) {\n  var source = this\n\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (!target_start) target_start = 0\n\n  // Copy 0 bytes; we're done\n  if (end === start) return\n  if (target.length === 0 || source.length === 0) return\n\n  // Fatal error conditions\n  if (end < start) throw new TypeError('sourceEnd < sourceStart')\n  if (target_start < 0 || target_start >= target.length)\n    throw new TypeError('targetStart out of bounds')\n  if (start < 0 || start >= source.length) throw new TypeError('sourceStart out of bounds')\n  if (end < 0 || end > source.length) throw new TypeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length)\n    end = this.length\n  if (target.length - target_start < end - start)\n    end = target.length - target_start + start\n\n  var len = end - start\n\n  if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < len; i++) {\n      target[i + target_start] = this[i + start]\n    }\n  } else {\n    target._set(this.subarray(start, start + len), target_start)\n  }\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function (value, start, end) {\n  if (!value) value = 0\n  if (!start) start = 0\n  if (!end) end = this.length\n\n  if (end < start) throw new TypeError('end < start')\n\n  // Fill 0 bytes; we're done\n  if (end === start) return\n  if (this.length === 0) return\n\n  if (start < 0 || start >= this.length) throw new TypeError('start out of bounds')\n  if (end < 0 || end > this.length) throw new TypeError('end out of bounds')\n\n  var i\n  if (typeof value === 'number') {\n    for (i = start; i < end; i++) {\n      this[i] = value\n    }\n  } else {\n    var bytes = utf8ToBytes(value.toString())\n    var len = bytes.length\n    for (i = start; i < end; i++) {\n      this[i] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function () {\n  if (typeof Uint8Array !== 'undefined') {\n    if (Buffer.TYPED_ARRAY_SUPPORT) {\n      return (new Buffer(this)).buffer\n    } else {\n      var buf = new Uint8Array(this.length)\n      for (var i = 0, len = buf.length; i < len; i += 1) {\n        buf[i] = this[i]\n      }\n      return buf.buffer\n    }\n  } else {\n    throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n  }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function (arr) {\n  arr.constructor = Buffer\n  arr._isBuffer = true\n\n  // save reference to original Uint8Array get/set methods before overwriting\n  arr._get = arr.get\n  arr._set = arr.set\n\n  // deprecated, will be removed in node 0.13+\n  arr.get = BP.get\n  arr.set = BP.set\n\n  arr.write = BP.write\n  arr.toString = BP.toString\n  arr.toLocaleString = BP.toString\n  arr.toJSON = BP.toJSON\n  arr.equals = BP.equals\n  arr.compare = BP.compare\n  arr.copy = BP.copy\n  arr.slice = BP.slice\n  arr.readUInt8 = BP.readUInt8\n  arr.readUInt16LE = BP.readUInt16LE\n  arr.readUInt16BE = BP.readUInt16BE\n  arr.readUInt32LE = BP.readUInt32LE\n  arr.readUInt32BE = BP.readUInt32BE\n  arr.readInt8 = BP.readInt8\n  arr.readInt16LE = BP.readInt16LE\n  arr.readInt16BE = BP.readInt16BE\n  arr.readInt32LE = BP.readInt32LE\n  arr.readInt32BE = BP.readInt32BE\n  arr.readFloatLE = BP.readFloatLE\n  arr.readFloatBE = BP.readFloatBE\n  arr.readDoubleLE = BP.readDoubleLE\n  arr.readDoubleBE = BP.readDoubleBE\n  arr.writeUInt8 = BP.writeUInt8\n  arr.writeUInt16LE = BP.writeUInt16LE\n  arr.writeUInt16BE = BP.writeUInt16BE\n  arr.writeUInt32LE = BP.writeUInt32LE\n  arr.writeUInt32BE = BP.writeUInt32BE\n  arr.writeInt8 = BP.writeInt8\n  arr.writeInt16LE = BP.writeInt16LE\n  arr.writeInt16BE = BP.writeInt16BE\n  arr.writeInt32LE = BP.writeInt32LE\n  arr.writeInt32BE = BP.writeInt32BE\n  arr.writeFloatLE = BP.writeFloatLE\n  arr.writeFloatBE = BP.writeFloatBE\n  arr.writeDoubleLE = BP.writeDoubleLE\n  arr.writeDoubleBE = BP.writeDoubleBE\n  arr.fill = BP.fill\n  arr.inspect = BP.inspect\n  arr.toArrayBuffer = BP.toArrayBuffer\n\n  return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-z]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction isArrayish (subject) {\n  return isArray(subject) || Buffer.isBuffer(subject) ||\n      subject && typeof subject === 'object' &&\n      typeof subject.length === 'number'\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    var b = str.charCodeAt(i)\n    if (b <= 0x7F) {\n      byteArray.push(b)\n    } else {\n      var start = i\n      if (b >= 0xD800 && b <= 0xDFFF) i++\n      var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')\n      for (var j = 0; j < h.length; j++) {\n        byteArray.push(parseInt(h[j], 16))\n      }\n    }\n  }\n  return byteArray\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; i++) {\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(str)\n}\n\nfunction blitBuffer (src, dst, offset, length, unitSize) {\n  if (unitSize) length -= length % unitSize;\n  for (var i = 0; i < length; i++) {\n    if ((i + offset >= dst.length) || (i >= src.length))\n      break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction decodeUtf8Char (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    return String.fromCharCode(0xFFFD) // UTF 8 invalid char\n  }\n}\n"
    },
    {
      "id": 54,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/hyphenRe.js",
      "name": "./~/ustring/src/hyphenRe.js",
      "size": 30,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
      "profile": {
        "factory": 100,
        "building": 330
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 41,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/camelize.js",
          "module": "./~/ustring/src/camelize.js",
          "moduleName": "./~/ustring/src/camelize.js",
          "type": "cjs require",
          "userRequest": "./hyphenRe",
          "loc": "7:15-36"
        },
        {
          "moduleId": 42,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/humanize.js",
          "module": "./~/ustring/src/humanize.js",
          "moduleName": "./~/ustring/src/humanize.js",
          "type": "cjs require",
          "userRequest": "./hyphenRe",
          "loc": "6:19-40"
        }
      ],
      "source": "module.exports = /[-\\s]+(.)?/g"
    },
    {
      "id": 55,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/alphanum.js",
      "name": "./~/ustring/src/is/alphanum.js",
      "size": 67,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
      "profile": {
        "factory": 147,
        "building": 336,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 45,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "module": "./~/ustring/src/is/index.js",
          "moduleName": "./~/ustring/src/is/index.js",
          "type": "cjs require",
          "userRequest": "./alphanum",
          "loc": "2:14-35"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = require('./match')(/^[a-zA-Z0-9]+$/)"
    },
    {
      "id": 56,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/match.js",
      "name": "./~/ustring/src/is/match.js",
      "size": 123,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
      "profile": {
        "factory": 148,
        "building": 341,
        "dependencies": 77
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 45,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "module": "./~/ustring/src/is/index.js",
          "moduleName": "./~/ustring/src/is/index.js",
          "type": "cjs require",
          "userRequest": "./match",
          "loc": "3:14-32"
        },
        {
          "moduleId": 55,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/alphanum.js",
          "module": "./~/ustring/src/is/alphanum.js",
          "moduleName": "./~/ustring/src/is/alphanum.js",
          "type": "cjs require",
          "userRequest": "./match",
          "loc": "3:17-35"
        }
      ],
      "source": "'use strict'\n\nvar F = require('functionally')\n\nmodule.exports = F.curry(function(re, value){\n    return !!re.test(value)\n})"
    },
    {
      "id": 57,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/guid.js",
      "name": "./~/ustring/src/is/guid.js",
      "size": 234,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
      "profile": {
        "factory": 148,
        "building": 337
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 45,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "module": "./~/ustring/src/is/index.js",
          "moduleName": "./~/ustring/src/is/index.js",
          "type": "cjs require",
          "userRequest": "./guid",
          "loc": "4:13-30"
        }
      ],
      "source": "'use strict'\n\nvar regex = /^[A-F0-9]{8}(?:-?[A-F0-9]{4}){3}-?[A-F0-9]{12}$/i\nvar regex2 = /^\\{[A-F0-9]{8}(?:-?[A-F0-9]{4}){3}-?[A-F0-9]{12}\\}$/i\n\nmodule.exports = function(value){\n    return regex.test(value) || regex2.test(value)\n}\n\n"
    },
    {
      "id": 58,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/numeric.js",
      "name": "./~/ustring/src/is/numeric.js",
      "size": 53,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
      "profile": {
        "factory": 149,
        "building": 336,
        "dependencies": 81
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 45,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/index.js",
          "module": "./~/ustring/src/is/index.js",
          "moduleName": "./~/ustring/src/is/index.js",
          "type": "cjs require",
          "userRequest": "./numeric",
          "loc": "6:16-36"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = require('i-s').numeric"
    },
    {
      "id": 59,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "name": "./~/functionally/index.js",
      "size": 20486,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
      "profile": {
        "factory": 213,
        "building": 404
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 32,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "module": "./~/drag-helper/index.js",
          "moduleName": "./~/drag-helper/index.js",
          "type": "cjs require",
          "userRequest": "functionally",
          "loc": "3:13-36"
        },
        {
          "moduleId": 56,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/ustring/src/is/match.js",
          "module": "./~/ustring/src/is/match.js",
          "moduleName": "./~/ustring/src/is/match.js",
          "type": "cjs require",
          "userRequest": "functionally",
          "loc": "3:8-31"
        }
      ],
      "source": "    var setImmediate = function(fn){\r\n        setTimeout(fn, 0)\r\n    }\r\n    var clearImmediate = clearTimeout\r\n    /**\r\n     * Utility methods for working with functions.\r\n     * These methods augment the Function prototype.\r\n     *\r\n     * Using {@link #before}\r\n     *\r\n     *      function log(m){\r\n     *          console.log(m)\r\n     *      }\r\n     *\r\n     *      var doLog = function (m){\r\n     *          console.log('LOG ')\r\n     *      }.before(log)\r\n     *\r\n     *      doLog('test')\r\n     *      //will log\r\n     *      //\"LOG \"\r\n     *      //and then\r\n     *      //\"test\"\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #bindArgs}:\r\n     *\r\n     *      //returns the sum of all arguments\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1 = add.bindArgs(1)\r\n     *\r\n     *      add1(2, 3) == 6\r\n     *\r\n     * Using {@link #lockArgs}:\r\n     *\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1_2   = add.lockArgs(1,2)\r\n     *      var add1_2_3 = add.lockArgs(1,2,3)\r\n     *\r\n     *      add1_2(3,4)  == 3 //args are locked to only be 1 and 2\r\n     *      add1_2_3(6)  == 6 //args are locked to only be 1, 2 and 3\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #compose}:\r\n     *\r\n     *      function multiply(a,b){\r\n     *          return a* b\r\n     *      }\r\n     *\r\n     *      var multiply2 = multiply.curry()(2)\r\n     *\r\n     *      Function.compose(multiply2( add(5,6) )) == multiply2( add(5,6) )\r\n     *\r\n     *\r\n     * @class Function\r\n     */\r\n\r\n    var SLICE = Array.prototype.slice\r\n\r\n    var curry = require('./src/curry'),\r\n\r\n        findFn = function(fn, target, onFound){\r\n            // if (typeof target.find == 'function'){\r\n            //     return target.find(fn)\r\n            // }\r\n\r\n            onFound = typeof onFound == 'function'?\r\n                        onFound:\r\n                        function(found, key, target){\r\n                            return found\r\n                        }\r\n\r\n            if (Array.isArray(target)){\r\n                var i   = 0\r\n                var len = target.length\r\n                var it\r\n\r\n                for(; i < len; i++){\r\n                    it = target[i]\r\n                    if (fn(it, i, target)){\r\n                        return onFound(it, i, target)\r\n                    }\r\n                }\r\n\r\n                return\r\n            }\r\n\r\n            if (typeof target == 'object'){\r\n                var keys = Object.keys(target)\r\n                var i = 0\r\n                var len = keys.length\r\n                var k\r\n                var it\r\n\r\n                for( ; i < len; i++){\r\n                    k  = keys[i]\r\n                    it = target[k]\r\n\r\n                    if (fn(it, k, target)){\r\n                        return onFound(it, k, target)\r\n                    }\r\n                }\r\n            }\r\n        },\r\n\r\n        find = curry(findFn, 2),\r\n\r\n        findIndex = curry(function(fn, target){\r\n            return findFn(fn, target, function(it, i){\r\n                return i\r\n            })\r\n        }),\r\n\r\n        bindFunctionsOf = function(obj) {\r\n            Object.keys(obj).forEach(function(k){\r\n                if (typeof obj[k] == 'function'){\r\n                    obj[k] = obj[k].bind(obj)\r\n                }\r\n            })\r\n\r\n            return obj\r\n        },\r\n\r\n        /*\r\n         * @param {Function...} an enumeration of functions, each consuming the result of the following function.\r\n         *\r\n         * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\r\n         *\r\n         * @return the result of the first function in the enumeration\r\n         */\r\n        compose = require('./src/compose'),\r\n\r\n        chain = require('./src/chain'),\r\n\r\n        once = require('./src/once'),\r\n\r\n        bindArgsArray = require('./src/bindArgsArray'),\r\n\r\n        bindArgs = require('./src/bindArgs'),\r\n\r\n        lockArgsArray = require('./src/lockArgsArray'),\r\n\r\n        lockArgs = require('./src/lockArgs'),\r\n\r\n        skipArgs = function(fn, count){\r\n            return function(){\r\n                var args = SLICE.call(arguments, count || 0)\r\n\r\n                return fn.apply(this, args)\r\n            }\r\n        },\r\n\r\n        intercept = function(interceptedFn, interceptingFn, withStopArg){\r\n\r\n            return function(){\r\n                var args    = [].from(arguments),\r\n                    stopArg = { stop: false }\r\n\r\n                if (withStopArg){\r\n                    args.push(stopArg)\r\n                }\r\n\r\n                var result = interceptingFn.apply(this, args)\r\n\r\n                if (withStopArg){\r\n                    if (stopArg.stop === true){\r\n                        return result\r\n                    }\r\n\r\n                } else {\r\n                    if (result === false){\r\n                        return result\r\n                    }\r\n                }\r\n\r\n                //the interception was not stopped\r\n                return interceptedFn.apply(this, arguments)\r\n            }\r\n\r\n        },\r\n\r\n        delay = function(fn, delay, scope){\r\n\r\n            var delayIsNumber = delay * 1 == delay\r\n\r\n            if (arguments.length == 2 && !delayIsNumber){\r\n                scope = delay\r\n                delay = 0\r\n            } else {\r\n                if (!delayIsNumber){\r\n                    delay = 0\r\n                }\r\n            }\r\n\r\n            return function(){\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                if (delay || !setImmediate){\r\n                    setTimeout(function(){\r\n                        fn.apply(self, args)\r\n                    }, delay)\r\n\r\n                } else {\r\n                    setImmediate(function(){\r\n                        fn.apply(self, args)\r\n                    })\r\n                }\r\n            }\r\n        },\r\n\r\n        defer = function(fn, scope){\r\n            return delay(fn, 0, scope)\r\n        },\r\n\r\n        buffer = function(fn, delay, scope){\r\n\r\n            var timeoutId = -1\r\n\r\n            return function(){\r\n\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                var withTimeout = delay || !setImmediate,\r\n                    clearFn = withTimeout?\r\n                                clearTimeout:\r\n                                clearImmediate,\r\n                    setFn   = withTimeout?\r\n                                setTimeout:\r\n                                setImmediate\r\n\r\n                if (timeoutId !== -1){\r\n                    clearFn(timeoutId)\r\n                }\r\n\r\n                timeoutId = setFn(function(){\r\n                    fn.apply(self, args)\r\n                    self = null\r\n                }, delay)\r\n\r\n            }\r\n\r\n        },\r\n\r\n        throttle = function(fn, delay, scope) {\r\n            var timeoutId = -1,\r\n                self,\r\n                args\r\n\r\n            return function () {\r\n\r\n                self = scope || this\r\n                args = arguments\r\n\r\n                if (timeoutId !== -1) {\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function () {\r\n                        fn.apply(self, args)\r\n\r\n                        self = null\r\n                        timeoutId = -1\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n        },\r\n\r\n        spread = function(fn, delay, scope){\r\n\r\n            var timeoutId       = -1\r\n            var callCount       = 0\r\n            var executeCount    = 0\r\n            var nextArgs        = {}\r\n            var increaseCounter = true\r\n            var resultingFnUnbound\r\n            var resultingFn\r\n\r\n            resultingFn = resultingFnUnbound = function(){\r\n\r\n                var args = arguments,\r\n                    self = scope || this\r\n\r\n                if (increaseCounter){\r\n                    nextArgs[callCount++] = {args: args, scope: self}\r\n                }\r\n\r\n                if (timeoutId !== -1){\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function(){\r\n                        fn.apply(self, args)\r\n\r\n                        timeoutId = -1\r\n                        executeCount++\r\n\r\n                        if (callCount !== executeCount){\r\n                            resultingFn = bindArgsArray(resultingFnUnbound, nextArgs[executeCount].args).bind(nextArgs[executeCount].scope)\r\n                            delete nextArgs[executeCount]\r\n\r\n                            increaseCounter = false\r\n                            resultingFn.apply(self)\r\n                            increaseCounter = true\r\n                        } else {\r\n                            nextArgs = {}\r\n                        }\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n            return resultingFn\r\n        },\r\n\r\n        /*\r\n         * @param {Array} args the array for which to create a cache key\r\n         * @param {Number} [cacheParamNumber] the number of args to use for the cache key. Use this to limit the args that area actually used for the cache key\r\n         */\r\n        getCacheKey = function(args, cacheParamNumber){\r\n            if (cacheParamNumber == null){\r\n                cacheParamNumber = -1\r\n            }\r\n\r\n            var i        = 0,\r\n                len      = Math.min(args.length, cacheParamNumber),\r\n                cacheKey = [],\r\n                it\r\n\r\n            for ( ; i < len; i++){\r\n                it = args[i]\r\n\r\n                if (root.check.isPlainObject(it) || Array.isArray(it)){\r\n                    cacheKey.push(JSON.stringify(it))\r\n                } else {\r\n                    cacheKey.push(String(it))\r\n                }\r\n            }\r\n\r\n            return cacheKey.join(', ')\r\n        },\r\n\r\n        /*\r\n         * @param {Function} fn - the function to cache results for\r\n         * @param {Number} skipCacheParamNumber - the index of the boolean parameter that makes this function skip the caching and\r\n         * actually return computed results.\r\n         * @param {Function|String} cacheBucketMethod - a function or the name of a method on this object which makes caching distributed across multiple buckets.\r\n         * If given, cached results will be searched into the cache corresponding to this bucket. If no result found, return computed result.\r\n         *\r\n         * For example this param is very useful when a function from a prototype is cached,\r\n         * but we want to return the same cached results only for one object that inherits that proto, not for all objects. Thus, for example for Wes.Element,\r\n         * we use the 'getId' cacheBucketMethod to indicate cached results for one object only.\r\n         * @param {Function} [cacheKeyBuilder] A function to be used to compose the cache key\r\n         *\r\n         * @return {Function} a new function, which returns results from cache, if they are available, otherwise uses the given fn to compute the results.\r\n         * This returned function has a 'clearCache' function attached, which clears the caching. If a parameter ( a bucket id) is  provided,\r\n         * only clears the cache in the specified cache bucket.\r\n         */\r\n        cache = function(fn, config){\r\n            config = config || {}\r\n\r\n            var bucketCache = {},\r\n                cache       = {},\r\n                skipCacheParamNumber = config.skipCacheIndex,\r\n                cacheBucketMethod    = config.cacheBucket,\r\n                cacheKeyBuilder      = config.cacheKey,\r\n                cacheArgsLength      = skipCacheParamNumber == null?\r\n                                            fn.length:\r\n                                            skipCacheParamNumber,\r\n                cachingFn\r\n\r\n            cachingFn = function(){\r\n                var result,\r\n                    skipCache = skipCacheParamNumber != null?\r\n                                                arguments[skipCacheParamNumber] === true:\r\n                                                false,\r\n                    args = skipCache?\r\n                                    SLICE.call(arguments, 0, cacheArgsLength):\r\n                                    SLICE.call(arguments),\r\n\r\n                    cacheBucketId = cacheBucketMethod != null?\r\n                                        typeof cacheBucketMethod == 'function'?\r\n                                            cacheBucketMethod():\r\n                                            typeof this[cacheBucketMethod] == 'function'?\r\n                                                this[cacheBucketMethod]():\r\n                                                null\r\n                                        :\r\n                                        null,\r\n\r\n\r\n                    cacheObject = cacheBucketId?\r\n                                        bucketCache[cacheBucketId]:\r\n                                        cache,\r\n\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(args, cacheArgsLength)\r\n\r\n                if (cacheBucketId && !cacheObject){\r\n                    cacheObject = bucketCache[cacheBucketId] = {}\r\n                }\r\n\r\n                if (skipCache || cacheObject[cacheKey] == null){\r\n                    cacheObject[cacheKey] = result = fn.apply(this, args)\r\n                } else {\r\n                    result = cacheObject[cacheKey]\r\n                }\r\n\r\n                return result\r\n            }\r\n\r\n            /*\r\n             * @param {String|Object|Number} [bucketId] the bucket for which to clear the cache. If none given, clears all the cache for this function.\r\n             */\r\n            cachingFn.clearCache = function(bucketId){\r\n                if (bucketId){\r\n                    delete bucketCache[String(bucketId)]\r\n                } else {\r\n                    cache = {}\r\n                    bucketCache = {}\r\n                }\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getCache = function(cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.getBucketCache(null, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket from which to retrieve the cached value\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getBucketCache = function(bucketId, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId);\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {}\r\n                }\r\n\r\n                return cacheObject[cacheKey]\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setCache = function(value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.setBucketCache(null, value, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket for which to set the cache value\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setBucketCache = function(bucketId, value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId)\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {};\r\n                }\r\n\r\n                return cacheObject[cacheKey] = value\r\n            }\r\n\r\n            return cachingFn\r\n        }\r\n\r\nmodule.exports = {\r\n\r\n    map: require('./src/map'),\r\n\r\n    dot: require('./src/dot'),\r\n\r\n    maxArgs: require('./src/maxArgs'),\r\n\r\n    /**\r\n     * @method compose\r\n     *\r\n     * Example:\r\n     *\r\n     *      zippy.Function.compose(c, b, a)\r\n     *\r\n     * See {@link Function#compose}\r\n     */\r\n    compose: compose,\r\n\r\n    /**\r\n     * See {@link Function#self}\r\n     */\r\n    self: function(fn){\r\n        return fn\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#buffer}\r\n     */\r\n    buffer: buffer,\r\n\r\n    /**\r\n     * See {@link Function#delay}\r\n     */\r\n    delay: delay,\r\n\r\n    /**\r\n     * See {@link Function#defer}\r\n     * @param {Function} fn\r\n     * @param {Object} scope\r\n     */\r\n    defer:defer,\r\n\r\n    /**\r\n     * See {@link Function#skipArgs}\r\n     * @param {Function} fn\r\n     * @param {Number} [count=0] how many args to skip when calling the resulting function\r\n     * @return {Function} The function that will call the original fn without the first count args.\r\n     */\r\n    skipArgs: skipArgs,\r\n\r\n    /**\r\n     * See {@link Function#intercept}\r\n     */\r\n    intercept: function(fn, interceptedFn, withStopArgs){\r\n        return intercept(interceptedFn, fn, withStopArgs)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#throttle}\r\n     */\r\n    throttle: throttle,\r\n\r\n    /**\r\n     * See {@link Function#spread}\r\n     */\r\n    spread: spread,\r\n\r\n    /**\r\n     * See {@link Function#chain}\r\n     */\r\n    chain: function(fn, where, mainFn){\r\n        return chain(where, mainFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#before}\r\n     */\r\n    before: function(fn, otherFn){\r\n        return chain('before', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#after}\r\n     */\r\n    after: function(fn, otherFn){\r\n        return chain('after', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#curry}\r\n     */\r\n    curry: curry,\r\n\r\n    /**\r\n     * See {@link Function#once}\r\n     */\r\n    once: once,\r\n\r\n    /**\r\n     * See {@link Function#bindArgs}\r\n     */\r\n    bindArgs: bindArgs,\r\n\r\n    /**\r\n     * See {@link Function#bindArgsArray}\r\n     */\r\n    bindArgsArray: bindArgsArray,\r\n\r\n    /**\r\n     * See {@link Function#lockArgs}\r\n     */\r\n    lockArgs: lockArgs,\r\n\r\n    /**\r\n     * See {@link Function#lockArgsArray}\r\n     */\r\n    lockArgsArray: lockArgsArray,\r\n\r\n    bindFunctionsOf: bindFunctionsOf,\r\n\r\n    find: find,\r\n\r\n    findIndex: findIndex,\r\n\r\n    newify: require('./src/newify')\r\n}"
    },
    {
      "id": 60,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
      "name": "./~/region-align/index.js",
      "size": 6793,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
      "profile": {
        "factory": 211,
        "building": 413,
        "dependencies": 30
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 32,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/drag-helper/index.js",
          "module": "./~/drag-helper/index.js",
          "moduleName": "./~/drag-helper/index.js",
          "type": "cjs require",
          "userRequest": "region-align",
          "loc": "5:13-36"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\n\nrequire('./Region.static')\nrequire('./Region.proto')\n\nvar COMPUTE_ALIGN_REGION = require('./computeAlignRegion')\n\n/**\n * region-align module exposes methods for aligning {@link Element} and {@link Region} instances\n *\n * The #alignTo method aligns this to the target element/region using the specified positions. See #alignTo for a graphical example.\n *\n *\n *      var div = Element.select('div.first')\n *\n *      div.alignTo(Element.select('body') , 'br-br')\n *\n *      //aligns the div to be in the bottom-right corner of the body\n *\n * Other useful methods\n *\n *  * {@link #alignRegions} - aligns a given source region to a target region\n *  * {@link #COMPUTE_ALIGN_REGION} - given a source region and a target region, and alignment positions, returns a clone of the source region, but aligned to satisfy the given alignments\n */\n\n\n/**\n * Aligns sourceRegion to targetRegion. It modifies the sourceRegion in order to perform the correct alignment.\n * See #COMPUTE_ALIGN_REGION for details and examples.\n *\n * This method calls #COMPUTE_ALIGN_REGION passing to it all its arguments. The #COMPUTE_ALIGN_REGION method returns a region that is properly aligned.\n * If this returned region position/size differs from sourceRegion, then the sourceRegion is modified to be an exact copy of the aligned region.\n *\n * @inheritdoc #COMPUTE_ALIGN_REGION\n * @return {String} the position used for alignment\n */\nRegion.alignRegions = function(sourceRegion, targetRegion, positions, config){\n\n    var result        = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var alignedRegion = result.region\n\n    if ( !alignedRegion.equals(sourceRegion) ) {\n        sourceRegion.setRegion(alignedRegion)\n    }\n\n    return result.position\n\n}\n\n    /**\n     *\n     * The #alignTo method aligns this to the given target region, using the specified alignment position(s).\n     * You can also specify a constrain for the alignment.\n     *\n     * Example\n     *\n     *      BIG\n     *      ________________________\n     *      |  _______              |\n     *      | |       |             |\n     *      | |   A   |             |\n     *      | |       |      _____  |\n     *      | |_______|     |     | |\n     *      |               |  B  | |\n     *      |               |     | |\n     *      |_______________|_____|_|\n     *\n     * Assume the *BIG* outside rectangle is our constrain region, and you want to align the *A* rectangle\n     * to the *B* rectangle. Ideally, you'll want their tops to be aligned, and *A* to be placed at the right side of *B*\n     *\n     *\n     *      //so we would align them using\n     *\n     *      A.alignTo(B, 'tl-tr', { constrain: BIG })\n     *\n     * But this would result in\n     *\n     *       BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |                _____ _|_____\n     *      |               |     | .     |\n     *      |               |  B  | . A   |\n     *      |               |     | .     |\n     *      |_______________|_____|_._____|\n     *\n     *\n     * Which is not what we want. So we specify an array of options to try\n     *\n     *      A.alignTo(B, ['tl-tr', 'tr-tl'], { constrain: BIG })\n     *\n     * So by this we mean: try to align A(top,left) with B(top,right) and stick to the BIG constrain. If this is not possible,\n     * try the next option: align A(top,right) with B(top,left)\n     *\n     * So this is what we end up with\n     *\n     *      BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |        _______ _____  |\n     *      |       |       |     | |\n     *      |       |   A   |  B  | |\n     *      |       |       |     | |\n     *      |_______|_______|_____|_|\n     *\n     *\n     * Which is a lot better!\n     *\n     * @param {Element/Region} target The target to which to align this alignable.\n     *\n     * @param {String[]/String} positions The positions for the alignment.\n     *\n     * Example:\n     *\n     *      'br-tl'\n     *      ['br-tl','br-tr','cx-tc']\n     *\n     * This method will try to align using the first position. But if there is a constrain region, that position might not satisfy the constrain.\n     * If this is the case, the next positions will be tried. If one of them satifies the constrain, it will be used for aligning and it will be returned from this method.\n     *\n     * If no position matches the contrain, the one with the largest intersection of the source region with the constrain will be used, and this alignable will be resized to fit the constrain region.\n     *\n     * @param {Object} config A config object with other configuration for this method\n     *\n     * @param {Array[]/Object[]/Object} config.offset The offset to use for aligning. If more that one offset is specified, then offset at a given index is used with the position at the same index.\n     *\n     * An offset can have the following form:\n     *\n     *      [left_offset, top_offset]\n     *      {left: left_offset, top: top_offset}\n     *      {x: left_offset, y: top_offset}\n     *\n     * You can pass one offset or an array of offsets. In case you pass just one offset,\n     * it cannot have the array form, so you cannot call\n     *\n     *      this.alignTo(target, positions, [10, 20])\n     *\n     * If you do, it will not be considered. Instead, please use\n     *\n     *      this.alignTo(target, positions, {x: 10, y: 20})\n     *\n     * Or\n     *\n     *      this.alignTo(target, positions, [[10, 20]] )\n     *\n     * @param {Boolean/Element/Region} config.constrain If boolean, target will be constrained to the document region, otherwise,\n     * getRegion will be called on this argument to determine the region we need to constrain to.\n     *\n     * @param {Boolean/Object} config.sync Either boolean or an object with {width, height}. If it is boolean,\n     * both width and height will be synced. If directions are specified, will only sync the direction which is specified as true\n     *\n     * @return {String}\n     *\n     */\nRegion.prototype.alignTo = function(target, positions, config){\n\n    config = config || {}\n\n    var sourceRegion = this\n    var targetRegion = Region.from(target)\n\n    var result = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var resultRegion = result.region\n\n    if (!resultRegion.equalsSize(sourceRegion)){\n        this.setSize(resultRegion.getSize())\n    }\n    if (!resultRegion.equalsPosition(sourceRegion)){\n        this.setPosition(resultRegion.getPosition(), { absolute: !!config.absolute })\n    }\n\n    return result.position\n}\n\nmodule.exports = Region"
    },
    {
      "id": 61,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/getInstantiatorFunction.js",
      "name": "./~/newify/getInstantiatorFunction.js",
      "size": 512,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
      "profile": {
        "factory": 312,
        "building": 186
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 49,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/newify/index.js",
          "module": "./~/newify/index.js",
          "moduleName": "./~/newify/index.js",
          "type": "cjs require",
          "userRequest": "./getInstantiatorFunction",
          "loc": "1:30-66"
        }
      ],
      "source": "module.exports = function(){\n\n    'use strict';\n\n    var fns = {}\n\n    return function(len){\n\n        if ( ! fns [len ] ) {\n\n            var args = []\n            var i    = 0\n\n            for (; i < len; i++ ) {\n                args.push( 'a[' + i + ']')\n            }\n\n            fns[len] = new Function(\n                            'c',\n                            'a',\n                            'return new c(' + args.join(',') + ')'\n                        )\n        }\n\n        return fns[len]\n    }\n\n}()"
    },
    {
      "id": 62,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copy.js",
      "name": "./~/copy-utils/copy.js",
      "size": 677,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 301,
        "building": 187
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copy",
          "loc": "22:14-31"
        }
      ],
      "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\n\n/**\n * Copies all properties from source to destination\n *\n *      copy({name: 'jon',age:5}, this);\n *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT ){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) ) {\n            destination[i] = source[i]\n        }\n\n    }\n\n    return destination\n}"
    },
    {
      "id": 63,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyIf.js",
      "name": "./~/copy-utils/copyIf.js",
      "size": 754,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 301,
        "building": 196
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyIf",
          "loc": "35:16-35"
        }
      ],
      "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties from source to destination, if the property does not exist into the destination\n *\n *      copyIf({name: 'jon',age:5}, {age:7})\n *      // => { name: 'jon', age: 7}\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) && (typeof destination[i] === STR_UNDEFINED) ) {\n\n            destination[i] = source[i]\n\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 64,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyList.js",
      "name": "./~/copy-utils/copyList.js",
      "size": 900,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 301,
        "building": 192
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyList",
          "loc": "77:18-39"
        },
        {
          "moduleId": 66,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeys.js",
          "module": "./~/copy-utils/copyKeys.js",
          "moduleName": "./~/copy-utils/copyKeys.js",
          "type": "cjs require",
          "userRequest": "./copyList",
          "loc": "7:15-36"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination\n *\n *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n *      // => {name: 'jon', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len; i++ ){\n        propName = list[i]\n\n        if ( typeof source[propName] !== STR_UNDEFINED ) {\n            destination[list[i]] = source[list[i]]\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 65,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyListIf.js",
      "name": "./~/copy-utils/copyListIf.js",
      "size": 1067,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 301,
        "building": 197
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyListIf",
          "loc": "91:20-43"
        },
        {
          "moduleId": 67,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeysIf.js",
          "module": "./~/copy-utils/copyKeysIf.js",
          "moduleName": "./~/copy-utils/copyKeysIf.js",
          "type": "cjs require",
          "userRequest": "./copyListIf",
          "loc": "7:17-40"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n *\n *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n *      // => {name: 'jon', age: 10}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len ; i++ ){\n        propName = list[i]\n        if (\n                (typeof source[propName]      !== STR_UNDEFINED) &&\n                (typeof destination[propName] === STR_UNDEFINED)\n            ){\n            destination[propName] = source[propName]\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 66,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeys.js",
      "name": "./~/copy-utils/copyKeys.js",
      "size": 1534,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 302,
        "building": 202,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyKeys",
          "loc": "105:18-39"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyList = require('./copyList')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination\n *\n *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n *      // => {name: 'jon', age: 5, theYear: 2006}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyList(source, destination, namedKeys)\n    }\n\n    if (\n           source != null && typeof source    === STR_OBJECT &&\n        namedKeys != null && typeof namedKeys === STR_OBJECT\n    ) {\n        var typeOfNamedProperty\n        var namedPropertyValue\n\n        for  (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n            namedPropertyValue  = namedKeys[propName]\n            typeOfNamedProperty = typeof namedPropertyValue\n\n            if (typeof source[propName] !== STR_UNDEFINED){\n                destination[typeOfNamedProperty == 'string'? namedPropertyValue : propName] = source[propName]\n            }\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 67,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/copyKeysIf.js",
      "name": "./~/copy-utils/copyKeysIf.js",
      "size": 1869,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 302,
        "building": 206,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 50,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/copy-utils/index.js",
          "module": "./~/copy-utils/index.js",
          "moduleName": "./~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyKeysIf",
          "loc": "120:20-43"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyListIf = require('./copyListIf')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination,\n * but only if the property does not already exist in the destination object\n *\n *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n *      // => {aname: 'test', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyListIf(source, destination, namedKeys)\n    }\n\n    if (\n               source != null && typeof source    === STR_OBJECT &&\n            namedKeys != null && typeof namedKeys === STR_OBJECT\n        ) {\n\n            var typeOfNamedProperty\n            var namedPropertyValue\n            var newPropertyName\n\n            for (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n\n                namedPropertyValue  = namedKeys[propName]\n                typeOfNamedProperty = typeof namedPropertyValue\n                newPropertyName     = typeOfNamedProperty == 'string'? namedPropertyValue : propName\n\n                if (\n                        typeof      source[propName]        !== STR_UNDEFINED &&\n                        typeof destination[newPropertyName] === STR_UNDEFINED\n                    ) {\n                    destination[newPropertyName] = source[propName]\n                }\n\n            }\n        }\n\n    return destination\n}"
    },
    {
      "id": 68,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "name": "../react-menus/lib/Menu.js",
      "size": 13929,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
      "profile": {
        "factory": 625,
        "building": 324,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 30,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "module": "/usr/lib/~/react-menus/lib/index.js",
          "moduleName": "/usr/lib/~/react-menus/lib/index.js",
          "type": "cjs require",
          "userRequest": "./Menu",
          "loc": "3:16-33"
        },
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "../Menu",
          "loc": "9:11-29"
        },
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "./Menu",
          "loc": "38:19-36"
        },
        {
          "moduleId": 110,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "module": "../react-menus/lib/MenuItem/prepareChildren.js",
          "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
          "type": "cjs require",
          "userRequest": "../Menu",
          "loc": "3:19-37"
        }
      ],
      "source": "'use strict';\n\nfunction emptyFn(){}\n\nvar React      = require('react')\nvar assign     = require('object-assign')\nvar Region     = require('region')\nvar inTriangle = require('point-in-triangle')\n\nvar getConstrainRegion = require('./align/getConstrainRegion')\nvar getItemStyleProps = require('./getItemStyleProps')\nvar renderSubMenu     = require('./renderSubMenu')\nvar renderChildren    = require('./renderChildren')\nvar prepareItem       = require('./prepareItem')\n\nvar propTypes = require('./propTypes')\nvar ScrollContainer = require('./ScrollContainer')\n\nvar MenuClass = React.createClass({\n\n    displayName: 'Menu',\n\n    propTypes: propTypes,\n\n    getDefaultProps: function(){\n\n        return {\n            isMenu: true,\n            enableScroll: true,\n            constrainTo: true,\n            defaultStyle: {\n                border  : '1px solid gray',\n                display : 'inline-block',\n                position: 'relative'\n            },\n            defaultSubMenuStyle: {\n                position: 'absolute'\n            },\n            scrollerProps: {\n            },\n            columns: ['label'],\n            items: null,\n            visible: true,\n            subMenuConstrainMargin: 10,\n\n            defaultItemStyle: {},\n            itemStyle: {},\n            defaultItemOverStyle: {},\n            itemOverStyle: {},\n            defaultItemDisabledStyle: {},\n            itemDisabledStyle: {},\n            defaultItemExpandedStyle: {},\n            itemExpandedStyle: {},\n\n            defaultCellStyle: {},\n            cellStyle: {},\n\n            stopClickPropagation: true\n        }\n    },\n\n    getInitialState: function() {\n        return {\n            mouseOver: false\n        }\n    },\n\n    componentDidMount: function() {\n        ;(this.props.onMount || emptyFn)(this)\n\n        if ((this.props.constrainTo || this.props.alignTo) && !this.props.subMenu){\n            setTimeout(function(){\n\n                if (!this.isMounted()){\n                    return\n                }\n                var props = this.props\n\n                var scrollRegion = Region.from(this.refs.scrollContainer.getDOMNode())\n                var domNode      = this.getDOMNode()\n                var domRegion    = Region.from(domNode)\n                var paddingSize  = domRegion.height\n\n                var actualHeight = scrollRegion.height + paddingSize\n                //get clientHeight of this dom node, so as to account for padding\n\n                //build the actual region of the menu\n                var actualRegion = Region({\n                    left  : domRegion.left,\n                    right : domRegion.right,\n\n                    top   : domRegion.top,\n                    bottom: domRegion.top + actualHeight\n                })\n\n                var constrainRegion = props.constrainTo?\n                                        getConstrainRegion(props.constrainTo):\n                                        null\n\n                var newState\n\n                if (props.alignTo){\n                    var parentRegion = Region.from(domNode.parentNode)\n                    var alignRegion = Region.from(props.alignTo)\n\n                    actualRegion.alignTo(alignRegion, props.alignPositions, {\n                        offset: props.alignOffset,\n                        constrain: constrainRegion\n                    })\n\n                    var newTop = actualRegion.top - parentRegion.top\n                    var newLeft = actualRegion.left - parentRegion.left\n\n                    newState = {\n                        style: {\n                            left: newLeft,\n                            top : newTop\n                        }\n                    }\n                }\n\n                if (constrainRegion){\n                    newState = newState || {}\n\n                    if (actualRegion.bottom > constrainRegion.bottom){\n                        newState.maxHeight = constrainRegion.bottom - actualRegion.top - paddingSize\n                    }\n                }\n\n                newState && this.setState(newState)\n            }.bind(this), 0)\n        }\n    },\n\n    prepareProps: function(thisProps, state) {\n        var props = {}\n\n        assign(props, this.props)\n\n        props.style     = this.prepareStyle(props, state)\n        props.className = this.prepareClassName(props)\n\n        props.itemStyleProps = getItemStyleProps(props, state)\n        props.children  = this.prepareChildren(props, state)\n\n        props.scrollerProps = this.prepareScrollerProps(props)\n\n        return props\n    },\n\n    prepareScrollerProps: function(props) {\n        return assign({}, props.scrollerProps)\n    },\n\n    prepareChildren: function(props, state){\n\n        var children = props.children\n\n        if (props.items){\n            children = props.items.map(this.prepareItem.bind(this, props, state))\n        }\n\n        return children\n    },\n\n    prepareItem: prepareItem,\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' z-menu'\n\n        return className\n    },\n\n    prepareStyle: function(props, state) {\n        var subMenuStyle = props.subMenu?\n                            props.defaultSubMenuStyle:\n                            null\n\n        var style = assign({}, props.defaultStyle, subMenuStyle, props.style)\n\n        if (!props.visible){\n            style.display = 'none'\n        }\n\n        if (props.absolute){\n            style.position = 'absolute'\n        }\n\n        if (props.at){\n            var isArray = Array.isArray(props.at)\n            var coords = {\n                left: isArray?\n                        props.at[0]:\n                        props.at.left === undefined?\n                            props.at.x || props.at.pageX:\n                            props.at.left,\n\n                top: isArray?\n                        props.at[1]:\n                        props.at.top === undefined?\n                            props.at.y || props.at.pageY:\n                            props.at.top\n            }\n\n            assign(style, coords)\n        }\n\n        if (state.style){\n            assign(style, state.style)\n        }\n\n        if (!this.isMounted() && (props.constrainTo || props.alignTo) && !props.subMenu){\n            //when a top menu is initially rendered (and should be constrained or has alignTo)\n            //we show it hidden initially, so we can safely constrain and/or align it\n            style.visibility = 'hidden'\n            style.maxHeight  = 0\n            style.overflow   = 'hidden'\n        }\n\n        return style\n    },\n\n    /////////////// RENDERING LOGIC\n\n    renderSubMenu: renderSubMenu,\n\n    render: function() {\n        var state = this.state\n        var props = this.prepareProps(this.props, state)\n\n        var menu     = this.renderSubMenu(props, state)\n        var children = this.renderChildren(props, state)\n\n        return (\n            React.createElement(\"div\", React.__spread({},  props), \n                menu, \n                React.createElement(ScrollContainer, {\n                    onMouseEnter: this.handleMouseEnter, \n                    onMouseLeave: this.handleMouseLeave, \n                    scrollerProps: props.scrollerProps, \n                    ref: \"scrollContainer\", enableScroll: props.enableScroll, maxHeight: state.maxHeight || props.maxHeight}, \n                    React.createElement(\"table\", {ref: \"table\"}, \n                        React.createElement(\"tbody\", null, \n                            children\n                        )\n                    )\n                )\n            )\n        )\n    },\n\n    renderChildren: renderChildren,\n\n    ////////////////////////// BEHAVIOUR LOGIC\n\n    handleMouseEnter: function() {\n        this.setState({\n            mouseInside: true\n        })\n\n        this.onActivate()\n    },\n\n    handleMouseLeave: function() {\n        this.setState({\n            mouseInside: false\n        })\n\n        if (!this.state.menu && !this.state.nextItem){\n        // if (!this.state.nextItem){\n            this.onInactivate()\n        }\n    },\n\n    onActivate: function() {\n        if (!this.state.activated){\n            // console.log('activate')\n            this.setState({\n                activated: true\n            })\n\n            ;(this.props.onActivate || emptyFn)()\n        }\n    },\n\n    onInactivate: function() {\n        if (this.state.activated){\n\n            this.setState({\n                activated: false\n            })\n\n            // console.log('inactivate')\n            ;(this.props.onInactivate || emptyFn)()\n        }\n    },\n\n    //we also need mouseOverSubMenu: Boolean\n    //since when from a submenu we move back to a parent menu, we may move\n    //to a different menu item than the one that triggered the submenu\n    //so we should display another submenu\n    handleSubMenuMouseEnter: function() {\n        this.setState({\n            mouseOverSubMenu: true\n        })\n    },\n\n    handleSubMenuMouseLeave: function() {\n        this.setState({\n            mouseOverSubMenu: false\n        })\n    },\n\n    isSubMenuActive: function() {\n        return this.state.subMenuActive\n    },\n\n    onSubMenuActivate: function() {\n        this.setState({\n            subMenuActive: true\n        })\n    },\n\n    onSubMenuInactivate: function() {\n        var ts = +new Date()\n\n        var nextItem      = this.state.nextItem\n        var nextTimestamp = this.state.nextTimestamp || 0\n\n        this.setState({\n            subMenuActive: false,\n            timestamp       : ts\n        }, function(){\n\n            setTimeout(function(){\n                if (ts != this.state.timestamp || (nextItem && (ts - nextTimestamp < 100))){\n                    //a menu show has occured in the mean-time,\n                    //so skip hiding the menu\n                    this.setItem(this.state.nextItem, this.state.nextOffset)\n                    return\n                }\n\n                if (!this.isSubMenuActive()){\n                    this.setItem()\n                }\n            }.bind(this), 10)\n\n        })\n\n    },\n\n    removeMouseMoveListener: function() {\n        if (this.onWindowMouseMove){\n            window.removeEventListener('mousemove', this.onWindowMouseMove)\n            this.onWindowMouseMove = null\n        }\n    },\n\n    onMenuItemMouseOut: function(itemProps, leaveOffset) {\n        if (this.state.menu){\n            this.setupCheck(leaveOffset)\n        }\n    },\n\n    /**\n     * Called when mouseout happens on the item for which there is a submenu displayed\n     */\n    onMenuItemMouseOver: function(itemProps, menuOffset, entryPoint) {\n\n        if (!this.isMounted()){\n            return\n        }\n\n        var menu = itemProps.menu\n        var ts   = +new Date()\n\n        if (!menu){\n            return\n        }\n\n        if (!this.state.menu){\n            //there is no menu visible, so it's safe to show the menu\n            this.setItem(itemProps, menuOffset)\n        } else {\n            //there is a menu visible, from the previous item that had mouse over\n            //so we should queue this item's menu as the next menu to be shown\n            this.setNextItem(itemProps, menuOffset)\n        }\n    },\n\n    setupCheck: function(offset){\n        if (!this.isMounted()){\n            return\n        }\n\n        var tolerance = 5\n\n        var domNode    = this.getDOMNode()\n        var menuNode   = domNode.querySelector('.z-menu')\n\n        if (!menuNode){\n            return\n        }\n\n        var menuRegion = Region.from(menuNode)\n\n        var x1 = menuRegion.left\n        var y1 = menuRegion.top// - tolerance\n\n        var x2 = menuRegion.left\n        var y2 = menuRegion.bottom// + tolerance\n\n        if (this.subMenuPosition == 'left'){\n            x1 = menuRegion.right\n            x2 = menuRegion.right\n        }\n\n        var x3 = offset.x + (this.subMenuPosition == 'left'? tolerance: -tolerance)\n        var y3 = offset.y\n\n        var triangle = [\n            [x1, y1],\n            [x2, y2],\n            [x3, y3]\n        ]\n\n        this.removeMouseMoveListener()\n\n        this.onWindowMouseMove = function(event){\n\n            var point = [event.pageX, event.pageY]\n\n            if (!inTriangle(point, triangle)){\n\n                this.removeMouseMoveListener()\n\n                if (!this.state.mouseOverSubMenu){\n                    //the mouse is not over a sub menu item\n                    //\n                    //so we show a menu of a sibling item, or hide the menu\n                    //if no sibling item visited\n                    this.setItem(this.state.nextItem, this.state.nextOffset)\n                }\n            }\n        }.bind(this)\n\n        window.addEventListener('mousemove', this.onWindowMouseMove)\n    },\n\n    setNextItem: function(itemProps, menuOffset) {\n\n        var ts = +new Date()\n\n        this.setState({\n            timestamp        : ts,\n\n            nextItem     : itemProps,\n            nextOffset   : menuOffset,\n            nextTimestamp: +new Date()\n        })\n    },\n\n    setItem: function(itemProps, offset) {\n\n        var menu = itemProps?\n                        itemProps.menu:\n                        null\n\n        // if (!menu){\n        //     return\n        // }\n\n        this.removeMouseMoveListener()\n\n        if (!this.isMounted()){\n            return\n        }\n\n        if (!menu && !this.state.mouseInside){\n            this.onInactivate()\n        }\n\n        this.setState({\n            itemProps    : itemProps,\n\n            menu         : menu,\n            menuOffset   : offset,\n            timestamp    : +new Date(),\n\n            nextItem     : null,\n            nextOffset   : null,\n            nextTimestamp: null\n        })\n    },\n\n    onMenuItemClick: function(props, index, event) {\n        var stopped = event.isPropagationStopped()\n\n        props.stopClickPropagation && event.stopPropagation()\n\n        if (!stopped){\n            ;(this.props.onClick || emptyFn)(event, props, index)\n        }\n    }\n})\n\nmodule.exports = MenuClass"
    },
    {
      "id": 69,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
      "name": "../react-menus/lib/MenuItemCell.js",
      "size": 1331,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
      "profile": {
        "factory": 685,
        "building": 280,
        "dependencies": 332
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 30,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "module": "/usr/lib/~/react-menus/lib/index.js",
          "moduleName": "/usr/lib/~/react-menus/lib/index.js",
          "type": "cjs require",
          "userRequest": "./MenuItemCell",
          "loc": "6:20-45"
        },
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "../MenuItemCell",
          "loc": "10:19-45"
        },
        {
          "moduleId": 106,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
          "module": "../react-menus/lib/renderChildren.js",
          "moduleName": "../react-menus/lib/renderChildren.js",
          "type": "cjs require",
          "userRequest": "./MenuItemCell",
          "loc": "4:19-44"
        },
        {
          "moduleId": 110,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "module": "../react-menus/lib/MenuItem/prepareChildren.js",
          "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
          "type": "cjs require",
          "userRequest": "../MenuItemCell",
          "loc": "4:19-45"
        },
        {
          "moduleId": 120,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
          "module": "../react-menus/lib/MenuItem/renderCell.js",
          "moduleName": "../react-menus/lib/MenuItem/renderCell.js",
          "type": "cjs require",
          "userRequest": "../MenuItemCell",
          "loc": "4:19-45"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign =require('object-assign')\nvar arrowStyle =require('arrow-style')\n\nfunction expanderStyle(){\n    var style = arrowStyle('right', {\n        width: 8,\n        height: 4\n    })\n\n    style.display = 'inline-block'\n\n    return style\n}\n\nvar MenuItemCell = React.createClass({\n\n    displayName: 'ReactMenuItemCell',\n\n    getDefaultProps: function() {\n        return {\n            defaultStyle: {\n                padding: 10,\n                whiteSpace: 'nowrap'\n            }\n        }\n    },\n\n    render: function() {\n        var props    = this.prepareProps(this.props)\n        var children = props.children\n\n        if (props.expander){\n            children = props.expander === true? '›': props.expander\n        }\n\n        return (\n            React.createElement(\"td\", React.__spread({},  props), \n                children\n            )\n        )\n    },\n\n    prepareProps: function(thisProps) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.style = this.prepareStyle(props)\n        // if (props.onMouseOver){\n        //     debugger\n        // }\n\n        return props\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        return style\n    }\n})\n\nmodule.exports = MenuItemCell"
    },
    {
      "id": 70,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
      "name": "../react-menus/lib/MenuSeparator.js",
      "size": 1149,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
      "profile": {
        "factory": 685,
        "building": 288,
        "dependencies": 324
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 30,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "module": "/usr/lib/~/react-menus/lib/index.js",
          "moduleName": "/usr/lib/~/react-menus/lib/index.js",
          "type": "cjs require",
          "userRequest": "./MenuSeparator",
          "loc": "7:20-46"
        },
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "./MenuSeparator",
          "loc": "9:22-48"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nvar emptyFn = function(){}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactMenuSeparator',\n\n    getDefaultProps: function() {\n        return {\n            defaultStyle: {\n                cursor: 'auto'\n            },\n            border: '1px solid gray'\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props)\n\n        return React.createElement(\"tr\", React.__spread({},  props), React.createElement(\"td\", {colSpan: 10}))\n    },\n\n    prepareProps: function(thisProps) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.style = this.prepareStyle(props)\n        props.className = this.prepareClassName(props)\n\n        return props\n    },\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' menu-separator'\n\n        return className\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, {\n            borderTop: props.border\n        }, props.style)\n\n        return style\n    }\n})"
    },
    {
      "id": 71,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
      "name": "../react-menus/lib/MenuItem/index.js",
      "size": 5526,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
      "profile": {
        "factory": 687,
        "building": 318,
        "dependencies": 294
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 30,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/react-menus/lib/index.js",
          "module": "/usr/lib/~/react-menus/lib/index.js",
          "moduleName": "/usr/lib/~/react-menus/lib/index.js",
          "type": "cjs require",
          "userRequest": "./MenuItem",
          "loc": "5:20-41"
        },
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "./MenuItem",
          "loc": "7:22-43"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\nvar Region = require('region')\nvar selectParent = require('select-parent')\n\nvar prepareChildren = require('./prepareChildren')\nvar Menu = require('../Menu')\nvar MenuItemCell = require('../MenuItemCell')\n\nvar emptyFn = function(){}\n\nvar MenuItem = React.createClass({\n\n    displayName: 'ReactMenuItem',\n\n    getInitialState: function() {\n        return {}\n    },\n\n    getDefaultProps: function() {\n        return {\n            isMenuItem: true,\n            defaultStyle: {\n                cursor: 'pointer',\n                background: 'white'\n            },\n            defaultOverStyle: {\n                background: '#d7e7ff'\n            },\n            defaultActiveStyle: {\n                background: 'rgb(187, 212, 251)'\n            },\n            defaultExpandedStyle: {\n                background: 'rgb(230, 240, 255)'\n            },\n            defaultDisabledStyle: {\n                color: 'gray',\n                cursor: 'default'\n            },\n            expander: '›'\n        }\n    },\n\n    render: function() {\n        var props = this.prepareProps(this.props, this.state)\n\n        return React.createElement(\"tr\", React.__spread({},  props))\n    },\n\n    prepareProps: function(thisProps, state) {\n        var props = {}\n\n        assign(props, thisProps)\n\n        props.mouseOver = !!state.mouseOver\n        props.active    = !!state.active\n        props.disabled    = !!props.disabled\n\n        props.style     = this.prepareStyle(props)\n        props.className = this.prepareClassName(props)\n\n        props.children  = this.prepareChildren(props)\n\n        props.onClick      = this.handleClick\n        props.onMouseEnter = this.handleMouseEnter.bind(this, props)\n        props.onMouseLeave = this.handleMouseLeave.bind(this, props)\n        props.onMouseDown  = this.handleMouseDown\n        props.onMouseMove  = this.handleMouseMove\n\n        return props\n    },\n\n    handleClick: function(event) {\n\n        var props = this.props\n\n        if (props.disabled){\n            event.stopPropagation()\n            return\n        }\n\n        ;(props.onClick || props.fn || emptyFn)(props, props.index, event)\n    },\n\n    handleMouseMove: function(event){\n\n    },\n\n    handleMouseDown: function(event) {\n        // event.preventDefault()\n\n        var mouseUpListener = function(){\n            this.setState({\n                active: false\n            })\n            window.removeEventListener('mouseup', mouseUpListener)\n        }.bind(this)\n\n        window.addEventListener('mouseup', mouseUpListener)\n\n        this.setState({\n            active: true\n        })\n    },\n\n    showMenu: function(menu, props) {\n\n        props.showMenu(menu, offset)\n    },\n\n    handleMouseEnter: function(props, event) {\n\n        if (props.disabled){\n            return\n        }\n\n        var offset = {\n            x: event.pageX,\n            y: event.pageY\n        }\n\n        this.setState({\n            mouseOver: true\n        })\n\n        if (props.onMenuItemMouseOver){\n\n            var menuOffset\n\n            if (props.menu){\n                var menuRegion = Region.from(selectParent('.z-menu', this.getDOMNode()))\n                var thisRegion = Region.from(this.getDOMNode())\n\n                menuOffset = {\n                    // pageX : thisRegion.left,\n                    // pageY : thisRegion.top,\n\n                    left  : thisRegion.left - menuRegion.left,\n                    top   : thisRegion.top  - menuRegion.top,\n                    width : thisRegion.width,\n                    height: thisRegion.height\n                }\n            }\n\n            props.onMenuItemMouseOver(props, menuOffset, offset)\n        }\n    },\n\n    handleMouseLeave: function(props, event) {\n\n        if (props.disabled){\n            return\n        }\n\n        var offset = {\n            x: event.pageX,\n            y: event.pageY\n        }\n\n        if (this.isMounted()){\n            this.setState({\n                active: false,\n                mouseOver: false\n            })\n        }\n\n        if (props.onMenuItemMouseOut){\n            props.onMenuItemMouseOut(props, offset)\n        }\n    },\n\n    prepareChildren: prepareChildren,\n\n    prepareClassName: function(props) {\n        var className = props.className || ''\n\n        className += ' menu-row'\n\n        if (props.disabled){\n            className += ' disabled ' + (props.disabledClassName || '')\n        } else {\n\n            if (props.mouseOver){\n                className += ' over ' + (props.overClassName || '')\n            }\n\n            if (props.active){\n                className += ' active ' + (props.activeClassName || '')\n            }\n\n            if (props.expanded){\n                className += ' expanded ' + (props.expandedClassName || '')\n            }\n        }\n\n        return className\n    },\n\n    prepareStyle: function(props) {\n        var style = {}\n\n        assign(style, props.defaultStyle, props.style)\n\n        if (props.disabled){\n\n            assign(style, props.defaultDisabledStyle, props.disabledStyle)\n\n        } else {\n\n            if (props.expanded){\n                assign(style, props.defaultExpandedStyle, props.expandedStyle)\n            }\n\n            if (props.mouseOver){\n                assign(style, props.defaultOverStyle, props.overStyle)\n            }\n\n            if (props.active){\n                assign(style, props.defaultActiveStyle, props.activeStyle)\n            }\n        }\n\n        return style\n    }\n})\n\nmodule.exports = MenuItem"
    },
    {
      "id": 72,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "name": "./~/i-s/src/index.js",
      "size": 489,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
      "profile": {
        "factory": 374,
        "building": 331
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 51,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/index.js",
          "module": "./~/i-s/index.js",
          "moduleName": "./~/i-s/index.js",
          "type": "cjs require",
          "userRequest": "./src",
          "loc": "1:17-33"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = {\n    'numeric'  : require('./numeric'),\n    'number'   : require('./number'),\n    'int'      : require('./int'),\n    'float'    : require('./float'),\n    'string'   : require('./string'),\n    'function' : require('./function'),\n    'object'   : require('./object'),\n    'arguments': require('./arguments'),\n    'boolean'  : require('./boolean'),\n    'date'     : require('./date'),\n    'regexp'   : require('./regexp'),\n    'array'    : require('./array')\n}"
    },
    {
      "id": 73,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.static.js",
      "name": "./~/region-align/Region.static.js",
      "size": 2874,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
      "profile": {
        "factory": 29,
        "building": 302,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 60,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "module": "./~/region-align/index.js",
          "moduleName": "./~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./Region.static",
          "loc": "5:0-26"
        }
      ],
      "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n * @static\n * Aligns the source region to the target region, so as to correspond to the given alignment.\n *\n * NOTE that this method makes changes on the sourceRegion in order for it to be aligned as specified.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n *\n * @param {String} align A string with 2 valid align positions, eg: 'tr-bl'.\n * For valid positions, see {@link Region#getPoint}\n *\n * Having 2 regions, we need to be able to align them as we wish:\n *\n * for example, if we have\n *\n *       source    target\n *       ________________\n *       ____\n *      |    |     ________\n *      |____|    |        |\n *                |        |\n *                |________|\n *\n * and we align 't-t', we get:\n *\n *       source    target\n *       _________________\n *\n *       ____      ________\n *      |    |    |        |\n *      |____|    |        |\n *                |________|\n *\n *  In this case, the source was moved down to be aligned to the top of the target\n *\n *\n * and if we align 'tc-tc' we get\n *\n *       source     target\n *       __________________\n *\n *                 ________\n *                | |    | |\n *                | |____| |\n *                |________|\n *\n *  Since the source was moved to have the top-center point to be the same with target top-center\n *\n *\n *\n * @return {RegionClass} The Region class\n */\nRegion.align = function(sourceRegion, targetRegion, align){\n\n    targetRegion = Region.from(targetRegion)\n\n    align = (align || 'c-c').split('-')\n\n    //<debug>\n    if (align.length != 2){\n        console.warn('Incorrect region alignment! The align parameter need to be in the form \\'br-c\\', that is, a - separated string!', align)\n    }\n    //</debug>\n\n    return Region.alignToPoint(sourceRegion, targetRegion.getPoint(align[1]), align[0])\n}\n\n/**\n * Modifies the given region to be aligned to the point, as specified by anchor\n *\n * @param {Region} region The region to align to the point\n * @param {Object} point The point to be used as a reference\n * @param {Number} point.x\n * @param {Number} point.y\n * @param {String} anchor The position where to anchor the region to the point. See {@link #getPoint} for available options/\n *\n * @return {Region} the given region\n */\nRegion.alignToPoint = function(region, point, anchor){\n\n    region = Region.from(region)\n\n    var sourcePoint = region.getPoint(anchor)\n    var count       = 0\n    var shiftObj    = {}\n\n    if (\n            sourcePoint.x != null &&\n            point.x != null\n        ){\n\n            count++\n            shiftObj.left = point.x - sourcePoint.x\n    }\n\n    if (\n            sourcePoint.y != null &&\n            point.y != null\n        ){\n            count++\n            shiftObj.top = point.y - sourcePoint.y\n    }\n\n    if (count){\n\n        region.shift(shiftObj)\n\n    }\n\n    return region\n}"
    },
    {
      "id": 74,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/Region.proto.js",
      "name": "./~/region-align/Region.proto.js",
      "size": 789,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
      "profile": {
        "factory": 29,
        "building": 313,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 60,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "module": "./~/region-align/index.js",
          "moduleName": "./~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./Region.proto",
          "loc": "6:0-25"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\n\n/**\n *\n * Aligns this region to the given region\n * @param {Region} region\n * @param {String} alignPositions For available positions, see {@link #getPoint}\n *\n *     eg: 'tr-bl'\n *\n * @return this\n */\nRegion.prototype.alignToRegion = function(region, alignPositions){\n    Region.align(this, region, alignPositions)\n\n    return this\n}\n\n/**\n * Aligns this region to the given point, in the anchor position\n * @param {Object} point eg: {x: 20, y: 600}\n * @param {Number} point.x\n * @param {Number} point.y\n *\n * @param {String} anchor For available positions, see {@link #getPoint}\n *\n *     eg: 'bl'\n *\n * @return this\n */\n Region.prototype.alignToPoint = function(point, anchor){\n    Region.alignToPoint(this, point, anchor)\n\n    return this\n}"
    },
    {
      "id": 75,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
      "name": "./~/region-align/computeAlignRegion.js",
      "size": 3447,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
      "profile": {
        "factory": 29,
        "building": 307,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 60,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/index.js",
          "module": "./~/region-align/index.js",
          "moduleName": "./~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./computeAlignRegion",
          "loc": "8:27-58"
        }
      ],
      "source": "'use strict'\n\nvar ALIGN_TO_NORMALIZED = require('./alignToNormalized')\n\nvar Region = require('region')\n\n/**\n * @localdoc Given source and target regions, and the given alignments required, returns a region that is the resulting allignment.\n * Does not modify the sourceRegion.\n *\n * Example\n *\n *      var sourceRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *\n *      var targetRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *      //has top-left at (10,10)\n *      //and bottom-right at (40, 100)\n *\n *      var alignRegion = alignable.COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, 'tl-br')\n *\n *      //alignRegion will be a clone of sourceRegion, but will have the\n *      //top-left corner aligned with bottom-right of targetRegion\n *\n *      alignRegion.get() // => { top: 40, left: 100, bottom: 70, right: 190 }\n *\n * @param  {Region} sourceRegion The source region to align to targetRegion\n * @param  {Region} targetRegion The target region to which to align the sourceRegion\n * @param  {String/String[]} positions    A string ( delimited by \"-\" characters ) or an array of strings with the position to try, in the order of their priority.\n * See Region#getPoint for a list of available positions. They can be combined in any way.\n * @param  {Object} config      A config object with other configuration for the alignment\n * @param  {Object/Object[]} config.offset      Optional offsets. Either an object or an array with a different offset for each position\n * @param  {Element/Region/Boolean} config.constrain  The constrain to region or element. If the boolean true, Region.getDocRegion() will be used\n * @param  {Object/Boolean} config.sync   A boolean object that indicates whether to sync sourceRegion and targetRegion sizes (width/height or both). Can be\n *\n *  * true - in order to sync both width and height\n *  * { width: true }  - to only sync width\n *  * { height: true } - to only sync height\n *  * { size: true }   - to sync both width and height\n *\n * @return {Object} an object with the following keys:\n *\n *  * position - the position where the alignment was made. One of the given positions\n *  * region   - the region where the alignment is in place\n *  * positionChanged - boolean value indicating if the position of the returned region is different from the position of sourceRegion\n *  * widthChanged    - boolean value indicating if the width of the returned region is different from the width of sourceRegion\n *  * heightChanged   - boolean value indicating if the height of the returned region is different from the height of sourceRegion\n */\nfunction COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config){\n    sourceRegion = Region.from(sourceRegion)\n\n    var sourceClone = sourceRegion.clone()\n    var position    = ALIGN_TO_NORMALIZED(sourceClone, targetRegion, positions, config)\n\n    return {\n        position        : position,\n        region          : sourceClone,\n        widthChanged    : sourceClone.getWidth() != sourceRegion.getWidth(),\n        heightChanged   : sourceClone.getHeight() != sourceRegion.getHeight(),\n        positionChanged : sourceClone.equalsPosition(sourceRegion)\n    }\n}\n\n\nmodule.exports = COMPUTE_ALIGN_REGION"
    },
    {
      "id": 76,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/ieee754/index.js",
      "name": "(webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js",
      "size": 2093,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
      "profile": {
        "factory": 411,
        "building": 156
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 53,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "type": "cjs require",
          "userRequest": "ieee754",
          "loc": "9:14-32"
        }
      ],
      "source": "exports.read = function(buffer, offset, isLE, mLen, nBytes) {\n  var e, m,\n      eLen = nBytes * 8 - mLen - 1,\n      eMax = (1 << eLen) - 1,\n      eBias = eMax >> 1,\n      nBits = -7,\n      i = isLE ? (nBytes - 1) : 0,\n      d = isLE ? -1 : 1,\n      s = buffer[offset + i];\n\n  i += d;\n\n  e = s & ((1 << (-nBits)) - 1);\n  s >>= (-nBits);\n  nBits += eLen;\n  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\n\n  m = e & ((1 << (-nBits)) - 1);\n  e >>= (-nBits);\n  nBits += mLen;\n  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\n\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity);\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function(buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c,\n      eLen = nBytes * 8 - mLen - 1,\n      eMax = (1 << eLen) - 1,\n      eBias = eMax >> 1,\n      rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\n      i = isLE ? 0 : (nBytes - 1),\n      d = isLE ? 1 : -1,\n      s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n  value = Math.abs(value);\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\n\n  e = (e << mLen) | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\n\n  buffer[offset + i - d] |= s * 128;\n};\n"
    },
    {
      "id": 77,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/is-array/index.js",
      "name": "(webpack)/~/node-libs-browser/~/buffer/~/is-array/index.js",
      "size": 470,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
      "profile": {
        "factory": 411,
        "building": 157
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 53,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "type": "cjs require",
          "userRequest": "is-array",
          "loc": "10:14-33"
        }
      ],
      "source": "\n/**\n * isArray\n */\n\nvar isArray = Array.isArray;\n\n/**\n * toString\n */\n\nvar str = Object.prototype.toString;\n\n/**\n * Whether or not the given `val`\n * is an array.\n *\n * example:\n *\n *        isArray([]);\n *        // > true\n *        isArray(arguments);\n *        // > false\n *        isArray('');\n *        // > false\n *\n * @param {mixed} val\n * @return {bool}\n */\n\nmodule.exports = isArray || function (val) {\n  return !! val && '[object Array]' == str.call(val);\n};\n"
    },
    {
      "id": 78,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/curry.js",
      "name": "./~/functionally/src/curry.js",
      "size": 581,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 270,
        "building": 142
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/curry",
          "loc": "78:16-38"
        },
        {
          "moduleId": 86,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/map.js",
          "module": "./~/functionally/src/map.js",
          "moduleName": "./~/functionally/src/map.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "3:12-30"
        },
        {
          "moduleId": 87,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/dot.js",
          "module": "./~/functionally/src/dot.js",
          "moduleName": "./~/functionally/src/dot.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "3:12-30"
        },
        {
          "moduleId": 88,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/maxArgs.js",
          "module": "./~/functionally/src/maxArgs.js",
          "moduleName": "./~/functionally/src/maxArgs.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "4:12-30"
        },
        {
          "moduleId": 89,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
          "module": "./~/functionally/src/newify.js",
          "moduleName": "./~/functionally/src/newify.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "4:13-31"
        }
      ],
      "source": "'use strict'\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
    },
    {
      "id": 79,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/compose.js",
      "name": "./~/functionally/src/compose.js",
      "size": 558,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 271,
        "building": 145
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/compose",
          "loc": "149:18-42"
        }
      ],
      "source": "'use strict'\n\nfunction composeTwo(f, g) {\n    return function () {\n        return f(g.apply(this, arguments))\n    }\n}\n\n/*\n * @param {Function...} an enumeration of functions, each consuming the result of the following function.\n *\n * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\n *\n * @return the result of the first function in the enumeration\n */\nmodule.exports = function(){\n\n    var args = arguments\n    var len  = args.length\n    var i    = 0\n    var f    = args[0]\n\n    while (++i < len) {\n        f = composeTwo(f, args[i])\n    }\n\n    return f\n}"
    },
    {
      "id": 80,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/chain.js",
      "name": "./~/functionally/src/chain.js",
      "size": 352,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 270,
        "building": 147
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/chain",
          "loc": "151:16-38"
        }
      ],
      "source": "'use strict'\n\nfunction chain(where, fn, secondFn){\n\n    return function(){\n        if (where === 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        var result = fn.apply(this, arguments)\n\n        if (where !== 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        return result\n    }\n}\n\nmodule.exports = chain"
    },
    {
      "id": 81,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/once.js",
      "name": "./~/functionally/src/once.js",
      "size": 263,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 288,
        "building": 130
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/once",
          "loc": "153:15-36"
        }
      ],
      "source": "'use once'\n\nfunction once(fn, scope){\n\n    var called\n    var result\n\n    return function(){\n        if (called){\n            return result\n        }\n\n        called = true\n\n        return result = fn.apply(scope || this, arguments)\n    }\n}\n\nmodule.exports = once"
    },
    {
      "id": 82,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgsArray.js",
      "name": "./~/functionally/src/bindArgsArray.js",
      "size": 298,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 288,
        "building": 133
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/bindArgsArray",
          "loc": "155:24-54"
        },
        {
          "moduleId": 83,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgs.js",
          "module": "./~/functionally/src/bindArgs.js",
          "moduleName": "./~/functionally/src/bindArgs.js",
          "type": "cjs require",
          "userRequest": "./bindArgsArray",
          "loc": "4:20-46"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n    return function(){\n        var thisArgs = SLICE.call(args || [])\n\n        if (arguments.length){\n            thisArgs.push.apply(thisArgs, arguments)\n        }\n\n        return fn.apply(this, thisArgs)\n    }\n}"
    },
    {
      "id": 83,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/bindArgs.js",
      "name": "./~/functionally/src/bindArgs.js",
      "size": 182,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 289,
        "building": 134,
        "dependencies": 61
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/bindArgs",
          "loc": "157:19-44"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar bindArgsArray = require('./bindArgsArray')\n\nmodule.exports = function(fn){\n    return bindArgsArray(fn, SLICE.call(arguments,1))\n}"
    },
    {
      "id": 84,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgsArray.js",
      "name": "./~/functionally/src/lockArgsArray.js",
      "size": 241,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 289,
        "building": 139
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/lockArgsArray",
          "loc": "159:24-54"
        },
        {
          "moduleId": 85,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgs.js",
          "module": "./~/functionally/src/lockArgs.js",
          "moduleName": "./~/functionally/src/lockArgs.js",
          "type": "cjs require",
          "userRequest": "./lockArgsArray",
          "loc": "4:20-46"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n\n    return function(){\n        if (!Array.isArray(args)){\n            args = SLICE.call(args || [])\n        }\n\n        return fn.apply(this, args)\n    }\n}"
    },
    {
      "id": 85,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/lockArgs.js",
      "name": "./~/functionally/src/lockArgs.js",
      "size": 183,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 289,
        "building": 140,
        "dependencies": 54
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/lockArgs",
          "loc": "161:19-44"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar lockArgsArray = require('./lockArgsArray')\n\nmodule.exports = function(fn){\n    return lockArgsArray(fn, SLICE.call(arguments, 1))\n}"
    },
    {
      "id": 86,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/map.js",
      "name": "./~/functionally/src/map.js",
      "size": 192,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 290,
        "building": 143,
        "dependencies": 50
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/map",
          "loc": "519:9-29"
        }
      ],
      "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(fn, value){\n    return value != undefined && typeof value.map?\n            value.map(fn):\n            fn(value)\n})"
    },
    {
      "id": 87,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/dot.js",
      "name": "./~/functionally/src/dot.js",
      "size": 148,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 290,
        "building": 146,
        "dependencies": 47
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/dot",
          "loc": "521:9-29"
        }
      ],
      "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(prop, value){\n    return value != undefined? value[prop]: undefined\n})"
    },
    {
      "id": 88,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/maxArgs.js",
      "name": "./~/functionally/src/maxArgs.js",
      "size": 211,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 291,
        "building": 149,
        "dependencies": 43
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/maxArgs",
          "loc": "523:13-37"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar curry = require('./curry')\n\nmodule.exports = function(fn, count){\n    return function(){\n        return fn.apply(this, SLICE.call(arguments, 0, count))\n    }\n}"
    },
    {
      "id": 89,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/src/newify.js",
      "name": "./~/functionally/src/newify.js",
      "size": 108,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
      "profile": {
        "factory": 291,
        "building": 152,
        "dependencies": 39
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 59,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/functionally/index.js",
          "module": "./~/functionally/index.js",
          "moduleName": "./~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/newify",
          "loc": "642:12-35"
        }
      ],
      "source": "'use strict'\n\nvar newify = require('newify')\nvar curry  = require('./curry')\n\nmodule.exports = curry(newify)"
    },
    {
      "id": 90,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/node_modules/base64-js/lib/b64.js",
      "name": "(webpack)/~/node-libs-browser/~/buffer/~/base64-js/lib/b64.js",
      "size": 3430,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
      "profile": {
        "factory": 474,
        "building": 180
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 53,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer/index.js",
          "module": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "moduleName": "(webpack)/~/node-libs-browser/~/buffer/index.js",
          "type": "cjs require",
          "userRequest": "base64-js",
          "loc": "8:13-33"
        }
      ],
      "source": "var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n  var Arr = (typeof Uint8Array !== 'undefined')\n    ? Uint8Array\n    : Array\n\n\tvar PLUS   = '+'.charCodeAt(0)\n\tvar SLASH  = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER  = 'a'.charCodeAt(0)\n\tvar UPPER  = 'A'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n"
    },
    {
      "id": 91,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/numeric.js",
      "name": "./~/i-s/src/numeric.js",
      "size": 111,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 95,
        "building": 141
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./numeric",
          "loc": "4:17-37"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return !isNaN( parseFloat( value ) ) && isFinite( value )\n}"
    },
    {
      "id": 92,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/number.js",
      "name": "./~/i-s/src/number.js",
      "size": 105,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 95,
        "building": 142
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "5:17-36"
        },
        {
          "moduleId": 93,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/int.js",
          "module": "./~/i-s/src/int.js",
          "moduleName": "./~/i-s/src/int.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "3:13-32"
        },
        {
          "moduleId": 94,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/float.js",
          "module": "./~/i-s/src/float.js",
          "moduleName": "./~/i-s/src/float.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "3:13-32"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value === 'number' && isFinite(value)\n}"
    },
    {
      "id": 93,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/int.js",
      "name": "./~/i-s/src/int.js",
      "size": 143,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 96,
        "building": 143,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./int",
          "loc": "6:17-33"
        }
      ],
      "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseInt(value, 10))\n}"
    },
    {
      "id": 94,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/float.js",
      "name": "./~/i-s/src/float.js",
      "size": 181,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 97,
        "building": 143,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./float",
          "loc": "7:17-35"
        }
      ],
      "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseFloat(value, 10)) && !(value === parseInt(value, 10))\n}"
    },
    {
      "id": 95,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/string.js",
      "name": "./~/i-s/src/string.js",
      "size": 85,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 96,
        "building": 144
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./string",
          "loc": "8:17-36"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'string'\n}"
    },
    {
      "id": 96,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/function.js",
      "name": "./~/i-s/src/function.js",
      "size": 160,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 97,
        "building": 144
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./function",
          "loc": "9:17-38"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Function]'\n}"
    },
    {
      "id": 97,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/object.js",
      "name": "./~/i-s/src/object.js",
      "size": 158,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 96,
        "building": 147
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./object",
          "loc": "10:17-36"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Object]'\n}"
    },
    {
      "id": 98,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/arguments.js",
      "name": "./~/i-s/src/arguments.js",
      "size": 179,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 97,
        "building": 145
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./arguments",
          "loc": "11:17-39"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Arguments]' || !!value.callee\n}"
    },
    {
      "id": 99,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/boolean.js",
      "name": "./~/i-s/src/boolean.js",
      "size": 86,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 98,
        "building": 146
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./boolean",
          "loc": "12:17-37"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'boolean'\n}"
    },
    {
      "id": 100,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/date.js",
      "name": "./~/i-s/src/date.js",
      "size": 156,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 97,
        "building": 147
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./date",
          "loc": "13:17-34"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Date]'\n}"
    },
    {
      "id": 101,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/regexp.js",
      "name": "./~/i-s/src/regexp.js",
      "size": 158,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 98,
        "building": 150
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./regexp",
          "loc": "14:17-36"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object RegExp]'\n}"
    },
    {
      "id": 102,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/array.js",
      "name": "./~/i-s/src/array.js",
      "size": 81,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 98,
        "building": 151
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 72,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/i-s/src/index.js",
          "module": "./~/i-s/src/index.js",
          "moduleName": "./~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./array",
          "loc": "15:17-35"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return Array.isArray(value)\n}"
    },
    {
      "id": 103,
      "identifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/alignToNormalized.js",
      "name": "./~/region-align/alignToNormalized.js",
      "size": 5225,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
      "profile": {
        "factory": 102,
        "building": 95,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 75,
          "moduleIdentifier": "/home/radu/code/react-datagrid/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/region-align/computeAlignRegion.js",
          "module": "./~/region-align/computeAlignRegion.js",
          "moduleName": "./~/region-align/computeAlignRegion.js",
          "type": "cjs require",
          "userRequest": "./alignToNormalized",
          "loc": "3:26-56"
        }
      ],
      "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n *\n * This method is trying to align the sourceRegion to the targetRegion, given the alignment positions\n * and the offsets. It only modifies the sourceRegion\n *\n * This is all well and easy, but if there is a constrainTo region, the algorithm has to take it into account.\n * In this case, it works as follows.\n *\n *  * start with the first alignment position. Aligns the region, adds the offset and then check for the constraint.\n *  * if the constraint condition is ok, return the position.\n *  * otherwise, remember the intersection area, if the regions are intersecting.\n *  * then go to the next specified align position, and so on, computing the maximum intersection area.\n *\n * If no alignment fits the constrainRegion, the sourceRegion will be resized to match it,\n * using the position with the maximum intersection area.\n *\n * Since we have computed the index of the position with the max intersection area, take that position,\n * and align the sourceRegion accordingly. Then resize the sourceRegion to the intersection, and reposition\n * it again, since resizing it might have destroyed the alignment.\n *\n * Return the position.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n * @param {String[]} positions\n * @param {Object} config\n * @param {Array} config.offset\n * @param {Region} config.constrain\n * @param {Boolean/Object} config.sync\n *\n * @return {String/Undefined} the chosen position for the alignment, or undefined if no position found\n */\nfunction ALIGN_TO_NORMALIZED(sourceRegion, targetRegion, positions, config){\n\n    targetRegion = Region.from(targetRegion)\n\n    config = config  || {}\n\n    var constrainTo = config.constrain,\n        syncOption  = config.sync,\n        offsets     = config.offset || [],\n        syncWidth   = false,\n        syncHeight  = false,\n        sourceClone = sourceRegion.clone()\n\n    /*\n     * Prepare the method arguments: positions, offsets, constrain and sync options\n     */\n    if (!Array.isArray(positions)){\n        positions = positions? [positions]: []\n    }\n\n    if (!Array.isArray(offsets)){\n        offsets = offsets? [offsets]: []\n    }\n\n    if (constrainTo){\n        constrainTo = constrainTo === true?\n                                Region.getDocRegion():\n                                constrainTo.getRegion()\n    }\n\n    if (syncOption){\n\n        if (syncOption.size){\n            syncWidth  = true\n            syncHeight = true\n        } else {\n            syncWidth  = syncOption === true?\n                            true:\n                            syncOption.width || false\n\n            syncHeight = syncOption === true?\n                            true:\n                            syncOption.height || false\n        }\n    }\n\n    if (syncWidth){\n        sourceClone.setWidth(targetRegion.getWidth())\n    }\n    if (syncHeight){\n        sourceClone.setHeight(targetRegion.getHeight())\n\n    }\n\n    var offset,\n        i = 0,\n        len = positions.length,\n        pos,\n        intersection,\n        itArea,\n        maxArea = -1,\n        maxAreaIndex = -1\n\n    for (; i < len; i++){\n        pos     = positions[i]\n        offset  = offsets[i]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            if (!Array.isArray(offset)){\n                offset = offsets[i] = [offset.x || offset.left, offset.y || offset.top]\n            }\n\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //the source region is already aligned in the correct position\n\n        if (constrainTo){\n            //if we have a constrain region, test for the constrain\n            intersection = sourceClone.getIntersection(constrainTo)\n\n            if ( intersection && intersection.equals(sourceClone) ) {\n                //constrain respected, so return (the aligned position)\n\n                sourceRegion.set(sourceClone)\n                return pos\n            } else {\n\n                //the constrain was not respected, so continue trying\n                if (intersection && ((itArea = intersection.getArea()) > maxArea)){\n                    maxArea      = itArea\n                    maxAreaIndex = i\n                }\n            }\n\n        } else {\n            sourceRegion.set(sourceClone)\n            return pos\n        }\n    }\n\n    //no alignment respected the constraints\n    if (~maxAreaIndex){\n        pos     = positions[maxAreaIndex]\n        offset  = offsets[maxAreaIndex]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //we are sure an intersection exists, because of the way the maxAreaIndex was computed\n        intersection = sourceClone.getIntersection(constrainTo)\n\n        sourceClone.setRegion(intersection)\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        sourceRegion.set(sourceClone)\n\n        return pos\n    }\n\n}\n\nmodule.exports = ALIGN_TO_NORMALIZED"
    },
    {
      "id": 104,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getItemStyleProps.js",
      "name": "../react-menus/lib/getItemStyleProps.js",
      "size": 898,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 328,
        "building": 36,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./getItemStyleProps",
          "loc": "11:24-54"
        }
      ],
      "source": "'use strict';\n\nvar assign = require('object-assign')\n\nmodule.exports = function(props, state){\n\n    var itemStyle         = assign({}, props.defaultItemStyle, props.itemStyle)\n    var itemOverStyle     = assign({}, props.defaultItemOverStyle, props.itemOverStyle)\n    var itemActiveStyle   = assign({}, props.defaultItemActiveStyle, props.itemActiveStyle)\n    var itemDisabledStyle = assign({}, props.defaultItemDisabledStyle, props.itemDisabledStyle)\n    var itemExpandedStyle = assign({}, props.defaultItemExpandedStyle, props.itemExpandedStyle)\n    var cellStyle     = assign({}, props.defaultCellStyle, props.cellStyle)\n\n    return {\n        itemStyle        : itemStyle,\n        itemOverStyle    : itemOverStyle,\n        itemActiveStyle  : itemActiveStyle,\n        itemDisabledStyle: itemDisabledStyle,\n        itemExpandedStyle: itemExpandedStyle,\n        cellStyle        : cellStyle\n    }\n}"
    },
    {
      "id": 105,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
      "name": "../react-menus/lib/renderSubMenu.js",
      "size": 1056,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 329,
        "building": 42,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./renderSubMenu",
          "loc": "12:24-50"
        }
      ],
      "source": "'use strict';\n\nvar Region           = require('region')\nvar assign           = require('object-assign')\nvar cloneWithProps   = require('react-clonewithprops')\nvar getPositionStyle = require('./getSubMenuPositionStyle')\n\nmodule.exports = function(props, state) {\n    var menu = state.menu\n\n    if (menu && this.isMounted()){\n\n        var style = getPositionStyle.call(this, props, state)\n\n        menu = cloneWithProps(menu, assign({\n            ref          : 'subMenu',\n            subMenu      : true,\n            maxHeight    : state.subMenuMaxHeight,\n            onActivate   : this.onSubMenuActivate,\n            onInactivate : this.onSubMenuInactivate,\n            scrollerProps: props.scrollerProps,\n            constrainTo  : props.constrainTo,\n            expander     : props.expander\n        }, props.itemStyleProps))\n\n        return React.createElement(\"div\", {ref: \"subMenuWrap\", style: style, \n                onMouseEnter: this.handleSubMenuMouseEnter, \n                onMouseLeave: this.handleSubMenuMouseLeave\n            }, menu)\n    }\n}"
    },
    {
      "id": 106,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
      "name": "../react-menus/lib/renderChildren.js",
      "size": 2399,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 328,
        "building": 55,
        "dependencies": 108
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./renderChildren",
          "loc": "13:24-51"
        }
      ],
      "source": "'use strict';\n\nvar React = require('react')\nvar MenuItemCell = require('./MenuItemCell')\n\nvar cloneWithProps = require('react-clonewithprops')\nvar assign         = require('object-assign')\n\nfunction emptyFn(){}\n\nmodule.exports = function(props, state) {\n\n    var expandedIndex  = state.itemProps?\n                            state.itemProps.index:\n                            -1\n\n    var children     = props.children\n    var maxCellCount = 1\n    var menuItems    = []\n\n    React.Children.map(children, function(item){\n        var itemProps = item.props\n\n        menuItems.push(item)\n\n        if (!itemProps || !itemProps.isMenuItem){\n            return\n        }\n\n        var count = React.Children.count(itemProps.children)\n\n        maxCellCount = Math.max(maxCellCount, count)\n    })\n\n    var itemStyleProps = props.itemStyleProps\n    var i = -1\n    var result = menuItems.map(function(item, index){\n        var itemProps = item.props\n\n        if (itemProps.isMenuItem){\n            i++\n\n            itemProps.onMenuItemMouseOver = this.onMenuItemMouseOver\n            itemProps.onMenuItemMouseOut  = this.onMenuItemMouseOut\n        }\n\n        var children = React.Children.map(itemProps.children, function(c){ return c })\n        var count    = React.Children.count(children)\n\n        if (count < maxCellCount){\n            children = children? [children]: []\n        }\n\n        while (count < maxCellCount){\n            count++\n            children.push(React.createElement(MenuItemCell, null))\n        }\n\n        var onClick = itemProps.onClick || emptyFn\n\n        return cloneWithProps(item, assign({\n            itemIndex: i,\n            key      : index,\n            index    : index,\n            expanded : expandedIndex == index,\n            children : children,\n            expander : props.expander,\n            onClick  : function(props, index, event){\n                onClick.apply(null, arguments)\n                this.onMenuItemClick(props, index, event)\n            }.bind(this)\n        }, {\n            style        : itemStyleProps.itemStyle,\n            overStyle    : itemStyleProps.itemOverStyle,\n            activeStyle  : itemStyleProps.itemActiveStyle,\n            disabledStyle: itemStyleProps.itemDisabledStyle,\n            expandedStyle: itemStyleProps.itemExpandedStyle,\n            cellStyle    : itemStyleProps.cellStyle\n        }))\n\n    }, this)\n\n    return result\n}"
    },
    {
      "id": 107,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
      "name": "../react-menus/lib/prepareItem.js",
      "size": 1291,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 329,
        "building": 64,
        "dependencies": 92
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./prepareItem",
          "loc": "14:24-48"
        }
      ],
      "source": "'use strict';\n\nvar React  = require('react')\nvar assign = require('object-assign')\n\nvar renderCells     = require('./MenuItem/renderCells')\nvar MenuItem        = require('./MenuItem')\nvar MenuItemFactory = React.createFactory(MenuItem)\nvar MenuSeparator   = require('./MenuSeparator')\n\nmodule.exports = function(props, state, item, index) {\n\n    var expandedIndex = state.itemProps?\n                            state.itemProps.index:\n                            -1\n\n    if (item === '-'){\n        return React.createElement(MenuSeparator, {key: index})\n    }\n\n    var className   = [props.itemClassName, item.cls, item.className]\n                        .filter(function(x)  {return !!x;})\n                        .join(' ')\n\n    var itemProps = assign({\n        className  : className,\n        key        : index,\n        data       : item,\n        columns    : props.columns,\n        expanded   : index === expandedIndex,\n        disabled   : item.disabled,\n        onClick    : item.onClick || item.fn\n    }, props.itemStyleProps)\n\n    itemProps.children = renderCells(itemProps)\n\n    if (item.items){\n        var Menu = require('./Menu')\n        itemProps.children.push(React.createElement(Menu, {items: item.items}))\n    }\n\n    return (props.itemFactory || MenuItemFactory)(itemProps)\n}"
    },
    {
      "id": 108,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/propTypes.js",
      "name": "../react-menus/lib/propTypes.js",
      "size": 512,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 330,
        "building": 89,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./propTypes",
          "loc": "16:16-38"
        }
      ],
      "source": "'use strict';\n\nvar React = require('react')\n\nmodule.exports = {\n    items      : React.PropTypes.array,\n    columns    : React.PropTypes.array,\n    onMount    : React.PropTypes.func,\n\n    defaultRowActiveStyle: React.PropTypes.object,\n    defaultRowOverStyle  : React.PropTypes.object,\n    defaultRowStyle      : React.PropTypes.object,\n\n    rowActiveStyle: React.PropTypes.object,\n    rowOverStyle  : React.PropTypes.object,\n    rowStyle      : React.PropTypes.object,\n\n    cellStyle  : React.PropTypes.object\n}"
    },
    {
      "id": 109,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
      "name": "../react-menus/lib/ScrollContainer.js",
      "size": 6153,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 329,
        "building": 84,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./ScrollContainer",
          "loc": "17:22-50"
        }
      ],
      "source": "'use strict'\n\nvar assign   = require('object-assign')\nvar Scroller = require('./Scroller')\nvar F        = require('functionally')\nvar buffer   = F.buffer\n\nfunction stop(event){\n    event.preventDefault()\n    event.stopPropagation()\n}\n\nmodule.exports = React.createClass({\n\n    displayName: 'ReactMenuScrollContainer',\n\n    getInitialState: function(){\n        return {\n            adjustScroll: true,\n            scrollPos: 0\n        }\n    },\n\n    getDefaultProps: function() {\n        return {\n            scrollStep : 5,\n            scrollSpeed: 50\n        }\n    },\n\n    componentWillUnmount: function(){\n        if (this.props.enableScroll){\n            window.removeEventListener('resize', this.onResizeListener)\n        }\n    },\n\n    componentDidMount: function(){\n        if (this.props.enableScroll){\n            setTimeout(function(){\n                if (!this.isMounted()){\n                    return\n                }\n\n                this.adjustScroll()\n\n                window.addEventListener('resize', this.onResizeListener = buffer(this.onWindowResize, this.props.onWindowResizeBuffer, this))\n            }.bind(this), 0)\n        }\n    },\n\n    componentDidUpdate: function(){\n        this.props.enableScroll && this.adjustScroll()\n    },\n\n    onWindowResize: function(){\n        this.adjustScroll()\n        this.doScroll(0)\n    },\n\n    render: function(){\n\n        var props = this.props\n        var children = props.children\n\n        if (!props.enableScroll){\n            return children\n        }\n\n        var scrollStyle = {\n            position: 'relative'\n        }\n\n        if (this.state.scrollPos){\n            scrollStyle.top = -this.state.scrollPos\n        }\n\n        var containerStyle = {\n            position: 'relative',\n            overflow: 'hidden'\n        }\n\n        if (props.maxHeight){\n            containerStyle.maxHeight = props.maxHeight\n        }\n\n        return React.createElement(\"div\", {\n            onMouseEnter: props.onMouseEnter, \n            onMouseLeave: props.onMouseLeave, \n            className: \"z-menu-scroll-container\", \n            style: containerStyle\n        }, \n            React.createElement(\"div\", {ref: \"tableWrap\", style: scrollStyle}, \n                children\n            ), \n            this.renderScroller(props, -1), \n            this.renderScroller(props, 1)\n        )\n    },\n\n    renderScroller: function(props, direction) {\n\n        var onMouseDown = direction == -1?\n                            this.handleScrollTop:\n                            this.handleScrollBottom\n\n        var onDoubleClick = direction == -1?\n                                this.handleScrollTopMax:\n                                this.handleScrollBottomMax\n\n        var visible = direction == -1?\n                            this.state.hasTopScroll:\n                            this.state.hasBottomScroll\n\n        var scrollerProps = assign({}, props.scrollerProps, {\n            visible    : visible,\n            side       : direction == -1? 'top': 'bottom',\n            onMouseDown: onMouseDown,\n            onDoubleClick: onDoubleClick\n        })\n\n        return React.createElement(Scroller, React.__spread({},  scrollerProps))\n    },\n\n    adjustScroll: function(){\n        if (!this.props.enableScroll){\n            return\n        }\n\n        if (!this.state.adjustScroll){\n            this.state.adjustScroll = true\n            return\n        }\n\n        var availableHeight = this.getAvailableHeight()\n        var tableHeight      = this.getCurrentTableHeight()\n\n        var state = {\n            adjustScroll  : false,\n            hasTopScroll : false,\n            hasBottomScroll: false\n        }\n\n        if (tableHeight > availableHeight){\n            state.maxScrollPos    = tableHeight - availableHeight\n            state.hasTopScroll    = this.state.scrollPos !== 0\n            state.hasBottomScroll = this.state.scrollPos != state.maxScrollPos\n        } else {\n            state.maxScrollPos = 0\n            state.scrollPos    = 0\n        }\n\n        this.setState(state)\n    },\n\n    getAvailableHeight: function() {\n        return this.getAvailableSizeDOM().clientHeight\n    },\n\n    getAvailableSizeDOM: function() {\n        return this.getDOMNode()\n    },\n\n    getCurrentTableHeight: function() {\n        return this.getCurrentSizeDOM().clientHeight\n    },\n\n    getCurrentSizeDOM: function() {\n        return this.refs.tableWrap.getDOMNode()\n    },\n\n    handleScrollTop: function(event){\n        event.preventDefault()\n        this.handleScroll(-1)\n    },\n\n    handleScrollBottom: function(event){\n        event.preventDefault()\n        this.handleScroll(1)\n    },\n\n    handleScrollTopMax: function(event){\n        stop(event)\n        this.handleScrollMax(-1)\n    },\n\n    handleScrollBottomMax: function(event){\n        stop(event)\n        this.handleScrollMax(1)\n    },\n\n    handleScrollMax: function(direction){\n        var maxPos = direction == -1?\n                        0:\n                        this.state.maxScrollPos\n\n        this.setScrollPosition(maxPos)\n    },\n\n    handleScroll: function(direction /*1 to bottom, -1 to up*/){\n        var mouseUpListener = function(){\n            this.stopScroll()\n            window.removeEventListener('mouseup', mouseUpListener)\n        }.bind(this)\n\n        window.addEventListener('mouseup', mouseUpListener)\n\n        this.scrollInterval = setInterval(this.doScroll.bind(this, direction), this.props.scrollSpeed)\n    },\n\n    doScroll: function(direction){\n        this.setState({\n            scrollDirection: direction\n        })\n\n        var newScrollPos = this.state.scrollPos + direction * this.props.scrollStep\n\n        this.setScrollPosition(newScrollPos)\n    },\n\n    setScrollPosition: function(scrollPos){\n        if (scrollPos > this.state.maxScrollPos){\n            scrollPos = this.state.maxScrollPos\n        }\n\n        if (scrollPos < 0){\n            scrollPos = 0\n        }\n\n        this.setState({\n            scrollPos: scrollPos,\n            scrolling : true\n        })\n    },\n\n    stopScroll: function(){\n        clearInterval(this.scrollInterval)\n\n        this.setState({\n            scrolling: false\n        })\n    }\n})"
    },
    {
      "id": 110,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
      "name": "../react-menus/lib/MenuItem/prepareChildren.js",
      "size": 962,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
      "profile": {
        "factory": 277,
        "building": 97,
        "dependencies": 62
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "./prepareChildren",
          "loc": "8:22-50"
        }
      ],
      "source": "'use strict';\n\nvar Menu         = require('../Menu')\nvar MenuItemCell = require('../MenuItemCell')\nvar renderCell   = require('./renderCell')\nvar cloneWithProps = require('react-clonewithprops')\n\nmodule.exports = function(props) {\n\n    var children = []\n    var menu\n\n    React.Children.forEach(props.children, function(child){\n        if (child){\n            if (child.props && child.props.isMenu){\n                menu = cloneWithProps(child, {\n                    ref: 'subMenu'\n                })\n                menu.props.subMenu = true\n                return\n            }\n\n            if (typeof child != 'string'){\n                child = cloneWithProps(child, {\n                    style: props.cellStyle\n                })\n            }\n\n            children.push(child)\n        }\n    })\n\n    if (menu){\n        props.menu = menu\n        children.push(React.createElement(MenuItemCell, {expander: props.expander || true}))\n    }\n\n    return children\n}"
    },
    {
      "id": 111,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
      "name": "../react-menus/lib/align/getConstrainRegion.js",
      "size": 575,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 333,
        "building": 100,
        "dependencies": 51
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "./align/getConstrainRegion",
          "loc": "10:25-62"
        },
        {
          "moduleId": 126,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
          "module": "../react-menus/lib/align/index.js",
          "moduleName": "../react-menus/lib/align/index.js",
          "type": "cjs require",
          "userRequest": "./getConstrainRegion",
          "loc": "4:25-56"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\nvar selectParent = require('select-parent')\n\nmodule.exports = function(constrainTo){\n    var constrainRegion\n\n    if (constrainTo === true){\n        constrainRegion = Region.getDocRegion()\n    }\n\n    if (!constrainRegion && typeof constrainTo === 'string'){\n        var parent = selectParent(constrainTo, this.getDOMNode())\n        constrainRegion = Region.from(parent)\n    }\n\n    if (!constrainRegion && typeof constrainTo === 'function'){\n        constrainRegion = Region.from(constrainTo())\n    }\n\n    return constrainRegion\n}"
    },
    {
      "id": 112,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/object-assign/index.js",
      "name": "../react-menus/~/object-assign/index.js",
      "size": 484,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 336,
        "building": 110
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "6:17-41"
        },
        {
          "moduleId": 69,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
          "module": "../react-menus/lib/MenuItemCell.js",
          "moduleName": "../react-menus/lib/MenuItemCell.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:12-36"
        },
        {
          "moduleId": 70,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuSeparator.js",
          "module": "../react-menus/lib/MenuSeparator.js",
          "moduleName": "../react-menus/lib/MenuSeparator.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 104,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getItemStyleProps.js",
          "module": "../react-menus/lib/getItemStyleProps.js",
          "moduleName": "../react-menus/lib/getItemStyleProps.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:13-37"
        },
        {
          "moduleId": 105,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "module": "../react-menus/lib/renderSubMenu.js",
          "moduleName": "../react-menus/lib/renderSubMenu.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:23-47"
        },
        {
          "moduleId": 106,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
          "module": "../react-menus/lib/renderChildren.js",
          "moduleName": "../react-menus/lib/renderChildren.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "7:21-45"
        },
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 109,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "module": "../react-menus/lib/ScrollContainer.js",
          "moduleName": "../react-menus/lib/ScrollContainer.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:15-39"
        },
        {
          "moduleId": 117,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
          "module": "../react-menus/lib/getSubMenuPositionStyle.js",
          "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:13-37"
        },
        {
          "moduleId": 119,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
          "module": "../react-menus/lib/Scroller.js",
          "moduleName": "../react-menus/lib/Scroller.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "4:20-44"
        },
        {
          "moduleId": 120,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
          "module": "../react-menus/lib/MenuItem/renderCell.js",
          "moduleName": "../react-menus/lib/MenuItem/renderCell.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "3:13-37"
        }
      ],
      "source": "'use strict';\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = Object.keys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n"
    },
    {
      "id": 113,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
      "name": "../react-menus/~/region/index.js",
      "size": 33,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 349,
        "building": 97
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "7:17-34"
        },
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "5:13-30"
        },
        {
          "moduleId": 105,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "module": "../react-menus/lib/renderSubMenu.js",
          "moduleName": "../react-menus/lib/renderSubMenu.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:23-40"
        },
        {
          "moduleId": 111,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
          "module": "../react-menus/lib/align/getConstrainRegion.js",
          "moduleName": "../react-menus/lib/align/getConstrainRegion.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 117,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
          "module": "../react-menus/lib/getSubMenuPositionStyle.js",
          "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 147,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "module": "../react-menus/~/region-align/index.js",
          "moduleName": "../react-menus/~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 156,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.static.js",
          "module": "../react-menus/~/region-align/Region.static.js",
          "moduleName": "../react-menus/~/region-align/Region.static.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 157,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.proto.js",
          "module": "../react-menus/~/region-align/Region.proto.js",
          "moduleName": "../react-menus/~/region-align/Region.proto.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        },
        {
          "moduleId": 158,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
          "module": "../react-menus/~/region-align/computeAlignRegion.js",
          "moduleName": "../react-menus/~/region-align/computeAlignRegion.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "5:13-30"
        },
        {
          "moduleId": 171,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/alignToNormalized.js",
          "module": "../react-menus/~/region-align/alignToNormalized.js",
          "moduleName": "../react-menus/~/region-align/alignToNormalized.js",
          "type": "cjs require",
          "userRequest": "region",
          "loc": "3:13-30"
        }
      ],
      "source": "module.exports = require('./src')"
    },
    {
      "id": 114,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/usr/lib/node_modules/arrow-style/index.js",
      "name": "/usr/lib/~/arrow-style/index.js",
      "size": 1309,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
      "profile": {
        "factory": 333,
        "building": 116
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 69,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItemCell.js",
          "module": "../react-menus/lib/MenuItemCell.js",
          "moduleName": "../react-menus/lib/MenuItemCell.js",
          "type": "cjs require",
          "userRequest": "arrow-style",
          "loc": "5:16-38"
        },
        {
          "moduleId": 119,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
          "module": "../react-menus/lib/Scroller.js",
          "moduleName": "../react-menus/lib/Scroller.js",
          "type": "cjs require",
          "userRequest": "arrow-style",
          "loc": "5:20-42"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function arrowStyle(side, config){\n\n    var arrowSize   = config.size   || 8\n    var arrowWidth  = config.width  || arrowSize\n    var arrowHeight = config.height || arrowSize\n    var arrowColor  = config.color  || 'black'\n    var includePosition = config.includePosition\n\n    var style\n\n    if (side == 'up' || side == 'down'){\n\n        style = {\n            borderLeft : arrowWidth + 'px solid transparent',\n            borderRight: arrowWidth + 'px solid transparent'\n        }\n\n        if (includePosition){\n            style.marginTop = -Math.round(arrowHeight/2) + 'px'\n            style.position  = 'relative'\n            style.top       = '50%'\n        }\n\n        style[side === 'up'? 'borderBottom': 'borderTop'] = arrowHeight + 'px solid ' + arrowColor\n    }\n\n    if (side == 'left' || side == 'right'){\n\n        style = {\n            borderTop : arrowHeight + 'px solid transparent',\n            borderBottom: arrowHeight + 'px solid transparent'\n        }\n\n        if (includePosition){\n            style.marginLeft = -Math.round(arrowWidth/2) + 'px'\n            style.position   = 'relative'\n            style.left       = '50%'\n        }\n\n        style[side === 'left'? 'borderRight': 'borderLeft'] = arrowWidth + 'px solid ' + arrowColor\n    }\n\n    return style\n}"
    },
    {
      "id": 115,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/point-in-triangle/index.js",
      "name": "../react-menus/~/point-in-triangle/index.js",
      "size": 803,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
      "profile": {
        "factory": 350,
        "building": 123
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 68,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Menu.js",
          "module": "../react-menus/lib/Menu.js",
          "moduleName": "../react-menus/lib/Menu.js",
          "type": "cjs require",
          "userRequest": "point-in-triangle",
          "loc": "8:17-45"
        }
      ],
      "source": "//http://www.blackpawn.com/texts/pointinpoly/\nmodule.exports = function pointInTriangle(point, triangle) {\n    //compute vectors & dot products\n    var cx = point[0], cy = point[1],\n        t0 = triangle[0], t1 = triangle[1], t2 = triangle[2],\n        v0x = t2[0]-t0[0], v0y = t2[1]-t0[1],\n        v1x = t1[0]-t0[0], v1y = t1[1]-t0[1],\n        v2x = cx-t0[0], v2y = cy-t0[1],\n        dot00 = v0x*v0x + v0y*v0y,\n        dot01 = v0x*v1x + v0y*v1y,\n        dot02 = v0x*v2x + v0y*v2y,\n        dot11 = v1x*v1x + v1y*v1y,\n        dot12 = v1x*v2x + v1y*v2y\n\n    // Compute barycentric coordinates\n    var b = (dot00 * dot11 - dot01 * dot01),\n        inv = b === 0 ? 0 : (1 / b),\n        u = (dot11*dot02 - dot01*dot12) * inv,\n        v = (dot00*dot12 - dot01*dot02) * inv\n    return u>=0 && v>=0 && (u+v < 1)\n}"
    },
    {
      "id": 116,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
      "name": "../react-menus/~/select-parent/index.js",
      "size": 257,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
      "profile": {
        "factory": 294,
        "building": 125
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 71,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/index.js",
          "module": "../react-menus/lib/MenuItem/index.js",
          "moduleName": "../react-menus/lib/MenuItem/index.js",
          "type": "cjs require",
          "userRequest": "select-parent",
          "loc": "6:19-43"
        },
        {
          "moduleId": 111,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/getConstrainRegion.js",
          "module": "../react-menus/lib/align/getConstrainRegion.js",
          "moduleName": "../react-menus/lib/align/getConstrainRegion.js",
          "type": "cjs require",
          "userRequest": "select-parent",
          "loc": "4:19-43"
        }
      ],
      "source": "'use strict';\n\nvar curry   = require('./curry')\nvar matches = require('./matches')\n\nmodule.exports = curry(function(selector, node){\n    while (node = node.parentElement){\n        if (matches.call(node, selector)){\n            return node\n        }\n    }\n})"
    },
    {
      "id": 117,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
      "name": "../react-menus/lib/getSubMenuPositionStyle.js",
      "size": 2912,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
      "profile": {
        "factory": 108,
        "building": 28,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 105,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "module": "../react-menus/lib/renderSubMenu.js",
          "moduleName": "../react-menus/lib/renderSubMenu.js",
          "type": "cjs require",
          "userRequest": "./getSubMenuPositionStyle",
          "loc": "6:23-59"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\nvar assign = require('object-assign')\nvar align  = require('./align')\n\nmodule.exports = function getPositionStyle(props, state){\n    if (!state.menu || !this.isMounted()){\n        this.prevMenuIndex = -1\n        return\n    }\n\n    var offset = state.menuOffset\n    var left   = offset.left + offset.width\n    var top    = offset.top\n\n    var menuIndex = state.itemProps.index\n    var sameMenu = this.prevMenuIndex == menuIndex\n\n    if (this.aligning && !sameMenu){\n        this.aligning = false\n    }\n\n    this.prevMenuIndex = menuIndex\n\n    var style = {\n        position     : 'absolute',\n        visibility   : 'hidden',\n        overflow     : 'hidden',\n        pointerEvents: 'none',\n        left         : left,\n        top          : top,\n        zIndex       : 1\n    }\n\n    if (!this.aligning && !sameMenu){\n        setTimeout(function(){\n\n            if (!this.isMounted()){\n                return\n            }\n\n            var thisRegion = Region.from(this.getDOMNode())\n            var menuItemRegion = Region.from({\n                left  : thisRegion.left,\n                top   : thisRegion.top + offset.top,\n                width : offset.width,\n                height: offset.height\n            })\n\n            var subMenuMounted = this.refs.subMenu && this.refs.subMenu.isMounted()\n            if (!subMenuMounted){\n                return\n            }\n\n            var subMenuRegion = Region.from(this.refs.subMenu.refs.scrollContainer.getCurrentSizeDOM())\n\n            var initialHeight = subMenuRegion.height\n\n            var alignPos = align(props, subMenuRegion, /* alignTo */ menuItemRegion, props.constrainTo)\n\n            var newHeight = subMenuRegion.height\n            var maxHeight\n\n            if (newHeight < initialHeight){\n                maxHeight = newHeight - props.subMenuConstrainMargin\n            }\n\n            if (maxHeight && alignPos == -1 /* upwards*/){\n                subMenuRegion.top = subMenuRegion.bottom - maxHeight\n            }\n\n            var newLeft = subMenuRegion.left - thisRegion.left\n            var newTop  = subMenuRegion.top  - thisRegion.top\n\n            if (Math.abs(newLeft - left) < 5){\n                newLeft = left\n            }\n\n            if (Math.abs(newTop - top) < 5){\n                newTop = top\n            }\n\n            this.subMenuPosition = newLeft < 0? 'left': 'right'\n\n            this.alignOffset = {\n                left: newLeft,\n                top : newTop\n            }\n            this.aligning = true\n\n            this.setState({\n                subMenuMaxHeight: maxHeight\n            })\n\n        }.bind(this), 0)\n    }\n\n    if (sameMenu || (this.aligning && this.alignOffset)){\n        assign(style, this.alignOffset)\n        style.visibility = 'visible'\n        delete style.pointerEvents\n        delete style.overflow\n    }\n\n    this.aligning = false\n\n    return style\n}"
    },
    {
      "id": 118,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCells.js",
      "name": "../react-menus/lib/MenuItem/renderCells.js",
      "size": 152,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
      "profile": {
        "factory": 86,
        "building": 30,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 107,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/prepareItem.js",
          "module": "../react-menus/lib/prepareItem.js",
          "moduleName": "../react-menus/lib/prepareItem.js",
          "type": "cjs require",
          "userRequest": "./MenuItem/renderCells",
          "loc": "6:22-55"
        }
      ],
      "source": "'use strict';\n\nvar renderCell = require('./renderCell')\n\nmodule.exports = function(props) {\n    return props.columns.map(renderCell.bind(null, props))\n}"
    },
    {
      "id": 119,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/Scroller.js",
      "name": "../react-menus/lib/Scroller.js",
      "size": 5051,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
      "profile": {
        "factory": 66,
        "building": 49,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 109,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "module": "../react-menus/lib/ScrollContainer.js",
          "moduleName": "../react-menus/lib/ScrollContainer.js",
          "type": "cjs require",
          "userRequest": "./Scroller",
          "loc": "4:15-36"
        }
      ],
      "source": "'use strict';\n\nvar React         = require('react')\nvar assign        = require('object-assign')\nvar getArrowStyle = require('arrow-style')\n\nfunction emptyFn(){}\n\nvar SCROLLER_STYLE = {\n    left      : 0,\n    right     : 0,\n    position  : 'absolute',\n    cursor    : 'pointer',\n    zIndex    : 1\n}\n\nfunction generateArrowStyle(props, state, overrideStyle){\n    var style = assign({}, overrideStyle)\n\n    var arrowConfig = {\n        color: style.color || props.arrowColor\n    }\n\n    var offset = 4\n    var width  = style.width  || props.arrowWidth  || props.arrowSize || (props.style.height - offset)\n    var height = style.height || props.arrowHeight || props.arrowSize || (props.style.height - offset)\n\n    arrowConfig.width  = width\n    arrowConfig.height = height\n\n    assign(style, getArrowStyle(props.side == 'top'? 'up':'down', arrowConfig))\n\n    style.display = 'inline-block'\n    style.position = 'absolute'\n\n    style.left = '50%'\n    style.marginLeft = -width\n\n    style.top = '50%'\n    style.marginTop = -height/2\n\n    if (state.active){\n        style.marginTop += props.side == 'top'? -1: 1\n    }\n\n    return style\n}\n\nvar Scroller = React.createClass({displayName: \"Scroller\",\n\n    display: 'ReactMenuScroller',\n\n    getInitialState: function() {\n        return {}\n    },\n\n    getDefaultProps: function(){\n        return {\n            height: 10,\n            defaultStyle: {\n                background : 'white'\n            },\n            defaultOverStyle: {},\n            overStyle: {},\n\n            defaultTopStyle: {\n                borderBottom: '1px solid gray'\n            },\n            topStyle: {},\n            defaultBottomStyle: {\n                borderTop: '1px solid gray'\n            },\n            bottomStyle: {},\n\n            arrowColor: 'gray',\n\n            arrowStyle: {},\n            defaultArrowStyle: {},\n            defaultArrowOverStyle: {\n                color: 'rgb(74, 74, 74)'\n            },\n            arrowOverStyle: {}\n        }\n    },\n\n    handleMouseEnter: function() {\n        this.setState({\n            mouseOver: true\n        })\n    },\n\n    handleMouseLeave: function() {\n        this.setState({\n            mouseOver: false\n        })\n    },\n\n    handleMouseDown: function(event) {\n        this.setState({\n            active: true\n        })\n\n        ;(this.props.onMouseDown || emptyFn)(event)\n    },\n\n    handleMouseUp: function(event) {\n        this.setState({\n            active: false\n        })\n\n        ;(this.props.onMouseUp || emptyFn)(event)\n    },\n\n    render: function(){\n        var props = assign({}, this.props, {\n            onMouseEnter: this.handleMouseEnter,\n            onMouseLeave: this.handleMouseLeave,\n\n            onMouseDown: this.handleMouseDown,\n            onMouseUp  : this.handleMouseUp\n        })\n\n        var state = this.state\n        var side  = props.side\n\n        props.className = this.prepareClassName(props, state)\n\n        props.style = this.prepareStyle(props, state)\n\n        var arrowStyle = this.prepareArrowStyle(props, state)\n\n        return props.factory?\n                    props.factory(props, side):\n                    React.createElement(\"div\", React.__spread({},  props), \n                        React.createElement(\"div\", {style: arrowStyle})\n                    )\n    },\n\n    prepareStyle: function(props, state) {\n        var defaultOverStyle\n        var overStyle\n\n        if (state.mouseOver){\n            overStyle        = props.overStyle\n            defaultOverStyle = props.defaultOverStyle\n        }\n\n        var defaultSideStyle = props.side == 'top'?\n                                props.defaultTopStyle:\n                                props.defaultBottomStyle\n        var sideStyle = props.side == 'top'?\n                            props.topStyle:\n                            props.bottomStyle\n\n        var style = assign({}, SCROLLER_STYLE,\n                            props.defaultStyle, defaultSideStyle, defaultOverStyle,\n                            props.style, sideStyle, overStyle)\n\n        style.height = style.height || props.height\n        style[props.side] = 0\n        if (!props.visible){\n            style.display = 'none'\n        }\n\n        return style\n    },\n\n    prepareClassName: function(props, state) {\n        //className\n        var className = props.className || ''\n        className += ' z-menu-scroller ' + props.side\n\n        if (props.active && props.visible){\n            className += ' active'\n        }\n\n        return className\n    },\n\n    prepareArrowStyle: function(props, state) {\n\n        var defaultArrowOverStyle\n        var arrowOverStyle\n\n        if (state.mouseOver){\n            defaultArrowOverStyle = props.defaultArrowOverStyle\n            arrowOverStyle        = props.arrowOverStyle\n        }\n\n        var arrowStyle = assign({}, props.defaultArrowStyle, defaultArrowOverStyle, props.arrowStyle, arrowOverStyle)\n\n        return generateArrowStyle(props, state, arrowStyle)\n    },\n\n    handleClick: function(event){\n        event.stopPropagation\n    }\n})\n\nmodule.exports = Scroller"
    },
    {
      "id": 120,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCell.js",
      "name": "../react-menus/lib/MenuItem/renderCell.js",
      "size": 294,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
      "profile": {
        "factory": 54,
        "building": 54,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 110,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "module": "../react-menus/lib/MenuItem/prepareChildren.js",
          "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
          "type": "cjs require",
          "userRequest": "./renderCell",
          "loc": "5:19-42"
        },
        {
          "moduleId": 118,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/renderCells.js",
          "module": "../react-menus/lib/MenuItem/renderCells.js",
          "moduleName": "../react-menus/lib/MenuItem/renderCells.js",
          "type": "cjs require",
          "userRequest": "./renderCell",
          "loc": "3:17-40"
        }
      ],
      "source": "'use strict';\n\nvar assign = require('object-assign')\nvar MenuItemCell = require('../MenuItemCell')\n\nmodule.exports = function(props, column) {\n    var style = assign({}, props.defaultCellStyle, props.cellStyle)\n\n    return React.createElement(MenuItemCell, {style: style}, props.data[column])\n}"
    },
    {
      "id": 121,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/curry.js",
      "name": "../react-menus/~/select-parent/curry.js",
      "size": 582,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
      "profile": {
        "factory": 15,
        "building": 53
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 116,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
          "module": "../react-menus/~/select-parent/index.js",
          "moduleName": "../react-menus/~/select-parent/index.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "3:14-32"
        }
      ],
      "source": "'use strict';\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
    },
    {
      "id": 122,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/matches.js",
      "name": "../react-menus/~/select-parent/matches.js",
      "size": 232,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
      "profile": {
        "factory": 15,
        "building": 55
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 116,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/select-parent/index.js",
          "module": "../react-menus/~/select-parent/index.js",
          "moduleName": "../react-menus/~/select-parent/index.js",
          "type": "cjs require",
          "userRequest": "./matches",
          "loc": "4:14-34"
        }
      ],
      "source": "'use strict';\n\nvar proto = Element.prototype\n\nvar nativeMatches = proto.matches ||\n  proto.mozMatchesSelector ||\n  proto.msMatchesSelector ||\n  proto.oMatchesSelector ||\n  proto.webkitMatchesSelector\n\nmodule.exports = nativeMatches\n"
    },
    {
      "id": 123,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/react-clonewithprops/index.js",
      "name": "../react-menus/~/react-clonewithprops/index.js",
      "size": 1960,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
      "profile": {
        "factory": 119,
        "building": 66,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 105,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderSubMenu.js",
          "module": "../react-menus/lib/renderSubMenu.js",
          "moduleName": "../react-menus/lib/renderSubMenu.js",
          "type": "cjs require",
          "userRequest": "react-clonewithprops",
          "loc": "5:23-54"
        },
        {
          "moduleId": 106,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/renderChildren.js",
          "module": "../react-menus/lib/renderChildren.js",
          "moduleName": "../react-menus/lib/renderChildren.js",
          "type": "cjs require",
          "userRequest": "react-clonewithprops",
          "loc": "6:21-52"
        },
        {
          "moduleId": 110,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/MenuItem/prepareChildren.js",
          "module": "../react-menus/lib/MenuItem/prepareChildren.js",
          "moduleName": "../react-menus/lib/MenuItem/prepareChildren.js",
          "type": "cjs require",
          "userRequest": "react-clonewithprops",
          "loc": "6:21-52"
        }
      ],
      "source": "'use strict';\r\nvar React    = require('react')\r\n  , hasOwn   = Object.prototype.hasOwnProperty\r\n  , version  = React.version.split('.').map(parseFloat)\r\n  , RESERVED = {\r\n      className:  resolve(joinClasses),\r\n      children:   function(){},\r\n      key:        function(){},\r\n      ref:        function(){},\r\n      style:      resolve(extend)\r\n    };\r\n\r\nmodule.exports = function cloneWithProps(child, props) {\r\n  var newProps = mergeProps(props, child.props);\r\n\r\n  if (!hasOwn.call(newProps, 'children') && hasOwn.call(child.props, 'children'))\r\n    newProps.children = child.props.children;\r\n\r\n  // < 0.11\r\n  if (version[0] === 0 && version[1] < 11)\r\n    return child.constructor.ConvenienceConstructor(newProps);\r\n  \r\n  // 0.11\r\n  if (version[0] === 0 && version[1] === 11)\r\n    return child.constructor(newProps);\r\n\r\n  // 0.12\r\n  else if (version[0] === 0 && version[1] === 12){\r\n    MockLegacyFactory.isReactLegacyFactory = true\r\n    MockLegacyFactory.type = child.type\r\n    return React.createElement(MockLegacyFactory, newProps);\r\n  }\r\n\r\n  // 0.13+\r\n  return React.createElement(child.type, newProps);\r\n\r\n  function MockLegacyFactory(){}\r\n}\r\n\r\nfunction mergeProps(currentProps, childProps) {\r\n  var newProps = extend(currentProps), key\r\n\r\n  for (key in childProps) {\r\n    if (hasOwn.call(RESERVED, key) )\r\n      RESERVED[key](newProps, childProps[key], key)\r\n\r\n    else if ( !hasOwn.call(newProps, key) )\r\n      newProps[key] = childProps[key];\r\n  }\r\n  return newProps\r\n}\r\n\r\nfunction resolve(fn){\r\n  return function(src, value, key){\r\n    if( !hasOwn.call(src, key)) src[key] = value\r\n    else src[key] = fn(src[key], value)\r\n  }\r\n}\r\n\r\nfunction joinClasses(a, b){\r\n  if ( !a ) return b || ''\r\n  return a + (b ? ' ' + b : '')\r\n}\r\n\r\nfunction extend() {\r\n  var target = {};\r\n  for (var i = 0; i < arguments.length; i++) \r\n    for (var key in arguments[i]) if (hasOwn.call(arguments[i], key)) \r\n      target[key] = arguments[i][key]   \r\n  return target\r\n}"
    },
    {
      "id": 124,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "name": "../react-menus/~/functionally/index.js",
      "size": 20486,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
      "profile": {
        "factory": 76,
        "building": 125
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 109,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/ScrollContainer.js",
          "module": "../react-menus/lib/ScrollContainer.js",
          "moduleName": "../react-menus/lib/ScrollContainer.js",
          "type": "cjs require",
          "userRequest": "functionally",
          "loc": "5:15-38"
        }
      ],
      "source": "    var setImmediate = function(fn){\r\n        setTimeout(fn, 0)\r\n    }\r\n    var clearImmediate = clearTimeout\r\n    /**\r\n     * Utility methods for working with functions.\r\n     * These methods augment the Function prototype.\r\n     *\r\n     * Using {@link #before}\r\n     *\r\n     *      function log(m){\r\n     *          console.log(m)\r\n     *      }\r\n     *\r\n     *      var doLog = function (m){\r\n     *          console.log('LOG ')\r\n     *      }.before(log)\r\n     *\r\n     *      doLog('test')\r\n     *      //will log\r\n     *      //\"LOG \"\r\n     *      //and then\r\n     *      //\"test\"\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #bindArgs}:\r\n     *\r\n     *      //returns the sum of all arguments\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1 = add.bindArgs(1)\r\n     *\r\n     *      add1(2, 3) == 6\r\n     *\r\n     * Using {@link #lockArgs}:\r\n     *\r\n     *      function add(){\r\n     *          var sum = 0\r\n     *          [].from(arguments).forEach(function(n){\r\n     *              sum += n\r\n     *          })\r\n     *\r\n     *          return sum\r\n     *      }\r\n     *\r\n     *      var add1_2   = add.lockArgs(1,2)\r\n     *      var add1_2_3 = add.lockArgs(1,2,3)\r\n     *\r\n     *      add1_2(3,4)  == 3 //args are locked to only be 1 and 2\r\n     *      add1_2_3(6)  == 6 //args are locked to only be 1, 2 and 3\r\n     *\r\n     *\r\n     *\r\n     * Using {@link #compose}:\r\n     *\r\n     *      function multiply(a,b){\r\n     *          return a* b\r\n     *      }\r\n     *\r\n     *      var multiply2 = multiply.curry()(2)\r\n     *\r\n     *      Function.compose(multiply2( add(5,6) )) == multiply2( add(5,6) )\r\n     *\r\n     *\r\n     * @class Function\r\n     */\r\n\r\n    var SLICE = Array.prototype.slice\r\n\r\n    var curry = require('./src/curry'),\r\n\r\n        findFn = function(fn, target, onFound){\r\n            // if (typeof target.find == 'function'){\r\n            //     return target.find(fn)\r\n            // }\r\n\r\n            onFound = typeof onFound == 'function'?\r\n                        onFound:\r\n                        function(found, key, target){\r\n                            return found\r\n                        }\r\n\r\n            if (Array.isArray(target)){\r\n                var i   = 0\r\n                var len = target.length\r\n                var it\r\n\r\n                for(; i < len; i++){\r\n                    it = target[i]\r\n                    if (fn(it, i, target)){\r\n                        return onFound(it, i, target)\r\n                    }\r\n                }\r\n\r\n                return\r\n            }\r\n\r\n            if (typeof target == 'object'){\r\n                var keys = Object.keys(target)\r\n                var i = 0\r\n                var len = keys.length\r\n                var k\r\n                var it\r\n\r\n                for( ; i < len; i++){\r\n                    k  = keys[i]\r\n                    it = target[k]\r\n\r\n                    if (fn(it, k, target)){\r\n                        return onFound(it, k, target)\r\n                    }\r\n                }\r\n            }\r\n        },\r\n\r\n        find = curry(findFn, 2),\r\n\r\n        findIndex = curry(function(fn, target){\r\n            return findFn(fn, target, function(it, i){\r\n                return i\r\n            })\r\n        }),\r\n\r\n        bindFunctionsOf = function(obj) {\r\n            Object.keys(obj).forEach(function(k){\r\n                if (typeof obj[k] == 'function'){\r\n                    obj[k] = obj[k].bind(obj)\r\n                }\r\n            })\r\n\r\n            return obj\r\n        },\r\n\r\n        /*\r\n         * @param {Function...} an enumeration of functions, each consuming the result of the following function.\r\n         *\r\n         * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\r\n         *\r\n         * @return the result of the first function in the enumeration\r\n         */\r\n        compose = require('./src/compose'),\r\n\r\n        chain = require('./src/chain'),\r\n\r\n        once = require('./src/once'),\r\n\r\n        bindArgsArray = require('./src/bindArgsArray'),\r\n\r\n        bindArgs = require('./src/bindArgs'),\r\n\r\n        lockArgsArray = require('./src/lockArgsArray'),\r\n\r\n        lockArgs = require('./src/lockArgs'),\r\n\r\n        skipArgs = function(fn, count){\r\n            return function(){\r\n                var args = SLICE.call(arguments, count || 0)\r\n\r\n                return fn.apply(this, args)\r\n            }\r\n        },\r\n\r\n        intercept = function(interceptedFn, interceptingFn, withStopArg){\r\n\r\n            return function(){\r\n                var args    = [].from(arguments),\r\n                    stopArg = { stop: false }\r\n\r\n                if (withStopArg){\r\n                    args.push(stopArg)\r\n                }\r\n\r\n                var result = interceptingFn.apply(this, args)\r\n\r\n                if (withStopArg){\r\n                    if (stopArg.stop === true){\r\n                        return result\r\n                    }\r\n\r\n                } else {\r\n                    if (result === false){\r\n                        return result\r\n                    }\r\n                }\r\n\r\n                //the interception was not stopped\r\n                return interceptedFn.apply(this, arguments)\r\n            }\r\n\r\n        },\r\n\r\n        delay = function(fn, delay, scope){\r\n\r\n            var delayIsNumber = delay * 1 == delay\r\n\r\n            if (arguments.length == 2 && !delayIsNumber){\r\n                scope = delay\r\n                delay = 0\r\n            } else {\r\n                if (!delayIsNumber){\r\n                    delay = 0\r\n                }\r\n            }\r\n\r\n            return function(){\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                if (delay || !setImmediate){\r\n                    setTimeout(function(){\r\n                        fn.apply(self, args)\r\n                    }, delay)\r\n\r\n                } else {\r\n                    setImmediate(function(){\r\n                        fn.apply(self, args)\r\n                    })\r\n                }\r\n            }\r\n        },\r\n\r\n        defer = function(fn, scope){\r\n            return delay(fn, 0, scope)\r\n        },\r\n\r\n        buffer = function(fn, delay, scope){\r\n\r\n            var timeoutId = -1\r\n\r\n            return function(){\r\n\r\n                var self = scope || this,\r\n                    args = arguments\r\n\r\n                if (delay < 0){\r\n                    fn.apply(self, args)\r\n                    return\r\n                }\r\n\r\n                var withTimeout = delay || !setImmediate,\r\n                    clearFn = withTimeout?\r\n                                clearTimeout:\r\n                                clearImmediate,\r\n                    setFn   = withTimeout?\r\n                                setTimeout:\r\n                                setImmediate\r\n\r\n                if (timeoutId !== -1){\r\n                    clearFn(timeoutId)\r\n                }\r\n\r\n                timeoutId = setFn(function(){\r\n                    fn.apply(self, args)\r\n                    self = null\r\n                }, delay)\r\n\r\n            }\r\n\r\n        },\r\n\r\n        throttle = function(fn, delay, scope) {\r\n            var timeoutId = -1,\r\n                self,\r\n                args\r\n\r\n            return function () {\r\n\r\n                self = scope || this\r\n                args = arguments\r\n\r\n                if (timeoutId !== -1) {\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function () {\r\n                        fn.apply(self, args)\r\n\r\n                        self = null\r\n                        timeoutId = -1\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n        },\r\n\r\n        spread = function(fn, delay, scope){\r\n\r\n            var timeoutId       = -1\r\n            var callCount       = 0\r\n            var executeCount    = 0\r\n            var nextArgs        = {}\r\n            var increaseCounter = true\r\n            var resultingFnUnbound\r\n            var resultingFn\r\n\r\n            resultingFn = resultingFnUnbound = function(){\r\n\r\n                var args = arguments,\r\n                    self = scope || this\r\n\r\n                if (increaseCounter){\r\n                    nextArgs[callCount++] = {args: args, scope: self}\r\n                }\r\n\r\n                if (timeoutId !== -1){\r\n                    //the function was called once again in the delay interval\r\n                } else {\r\n                    timeoutId = setTimeout(function(){\r\n                        fn.apply(self, args)\r\n\r\n                        timeoutId = -1\r\n                        executeCount++\r\n\r\n                        if (callCount !== executeCount){\r\n                            resultingFn = bindArgsArray(resultingFnUnbound, nextArgs[executeCount].args).bind(nextArgs[executeCount].scope)\r\n                            delete nextArgs[executeCount]\r\n\r\n                            increaseCounter = false\r\n                            resultingFn.apply(self)\r\n                            increaseCounter = true\r\n                        } else {\r\n                            nextArgs = {}\r\n                        }\r\n                    }, delay)\r\n                }\r\n\r\n            }\r\n\r\n            return resultingFn\r\n        },\r\n\r\n        /*\r\n         * @param {Array} args the array for which to create a cache key\r\n         * @param {Number} [cacheParamNumber] the number of args to use for the cache key. Use this to limit the args that area actually used for the cache key\r\n         */\r\n        getCacheKey = function(args, cacheParamNumber){\r\n            if (cacheParamNumber == null){\r\n                cacheParamNumber = -1\r\n            }\r\n\r\n            var i        = 0,\r\n                len      = Math.min(args.length, cacheParamNumber),\r\n                cacheKey = [],\r\n                it\r\n\r\n            for ( ; i < len; i++){\r\n                it = args[i]\r\n\r\n                if (root.check.isPlainObject(it) || Array.isArray(it)){\r\n                    cacheKey.push(JSON.stringify(it))\r\n                } else {\r\n                    cacheKey.push(String(it))\r\n                }\r\n            }\r\n\r\n            return cacheKey.join(', ')\r\n        },\r\n\r\n        /*\r\n         * @param {Function} fn - the function to cache results for\r\n         * @param {Number} skipCacheParamNumber - the index of the boolean parameter that makes this function skip the caching and\r\n         * actually return computed results.\r\n         * @param {Function|String} cacheBucketMethod - a function or the name of a method on this object which makes caching distributed across multiple buckets.\r\n         * If given, cached results will be searched into the cache corresponding to this bucket. If no result found, return computed result.\r\n         *\r\n         * For example this param is very useful when a function from a prototype is cached,\r\n         * but we want to return the same cached results only for one object that inherits that proto, not for all objects. Thus, for example for Wes.Element,\r\n         * we use the 'getId' cacheBucketMethod to indicate cached results for one object only.\r\n         * @param {Function} [cacheKeyBuilder] A function to be used to compose the cache key\r\n         *\r\n         * @return {Function} a new function, which returns results from cache, if they are available, otherwise uses the given fn to compute the results.\r\n         * This returned function has a 'clearCache' function attached, which clears the caching. If a parameter ( a bucket id) is  provided,\r\n         * only clears the cache in the specified cache bucket.\r\n         */\r\n        cache = function(fn, config){\r\n            config = config || {}\r\n\r\n            var bucketCache = {},\r\n                cache       = {},\r\n                skipCacheParamNumber = config.skipCacheIndex,\r\n                cacheBucketMethod    = config.cacheBucket,\r\n                cacheKeyBuilder      = config.cacheKey,\r\n                cacheArgsLength      = skipCacheParamNumber == null?\r\n                                            fn.length:\r\n                                            skipCacheParamNumber,\r\n                cachingFn\r\n\r\n            cachingFn = function(){\r\n                var result,\r\n                    skipCache = skipCacheParamNumber != null?\r\n                                                arguments[skipCacheParamNumber] === true:\r\n                                                false,\r\n                    args = skipCache?\r\n                                    SLICE.call(arguments, 0, cacheArgsLength):\r\n                                    SLICE.call(arguments),\r\n\r\n                    cacheBucketId = cacheBucketMethod != null?\r\n                                        typeof cacheBucketMethod == 'function'?\r\n                                            cacheBucketMethod():\r\n                                            typeof this[cacheBucketMethod] == 'function'?\r\n                                                this[cacheBucketMethod]():\r\n                                                null\r\n                                        :\r\n                                        null,\r\n\r\n\r\n                    cacheObject = cacheBucketId?\r\n                                        bucketCache[cacheBucketId]:\r\n                                        cache,\r\n\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(args, cacheArgsLength)\r\n\r\n                if (cacheBucketId && !cacheObject){\r\n                    cacheObject = bucketCache[cacheBucketId] = {}\r\n                }\r\n\r\n                if (skipCache || cacheObject[cacheKey] == null){\r\n                    cacheObject[cacheKey] = result = fn.apply(this, args)\r\n                } else {\r\n                    result = cacheObject[cacheKey]\r\n                }\r\n\r\n                return result\r\n            }\r\n\r\n            /*\r\n             * @param {String|Object|Number} [bucketId] the bucket for which to clear the cache. If none given, clears all the cache for this function.\r\n             */\r\n            cachingFn.clearCache = function(bucketId){\r\n                if (bucketId){\r\n                    delete bucketCache[String(bucketId)]\r\n                } else {\r\n                    cache = {}\r\n                    bucketCache = {}\r\n                }\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getCache = function(cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.getBucketCache(null, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket from which to retrieve the cached value\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.getBucketCache = function(bucketId, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId);\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {}\r\n                }\r\n\r\n                return cacheObject[cacheKey]\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setCache = function(value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n                return cachingFn.setBucketCache(null, value, cacheArgs, cacheParamNumber, cacheKeyBuilder)\r\n            }\r\n\r\n            /*\r\n             *\r\n             * @param {String} bucketId The id of the cache bucket for which to set the cache value\r\n             * @param {Object} value The value to set in the cache\r\n             * @param {Array} cacheArgs The array of objects from which to create the cache key\r\n             * @param {Number} [cacheParamNumber] A limit for the cache args that are actually used to compute the cache key.\r\n             * @param {Function} [cacheKeyBuilder] The function to be used to compute the cache key from the given cacheArgs and cacheParamNumber\r\n             */\r\n            cachingFn.setBucketCache = function(bucketId, value, cacheArgs, cacheParamNumber, cacheKeyBuilder){\r\n\r\n                var cacheObject = cache,\r\n                    cacheKey = (cacheKeyBuilder || getCacheKey)(cacheArgs, cacheParamNumber)\r\n\r\n                if (bucketId){\r\n                    bucketId = String(bucketId)\r\n\r\n                    cacheObject = bucketCache[bucketId] = bucketCache[bucketId] || {};\r\n                }\r\n\r\n                return cacheObject[cacheKey] = value\r\n            }\r\n\r\n            return cachingFn\r\n        }\r\n\r\nmodule.exports = {\r\n\r\n    map: require('./src/map'),\r\n\r\n    dot: require('./src/dot'),\r\n\r\n    maxArgs: require('./src/maxArgs'),\r\n\r\n    /**\r\n     * @method compose\r\n     *\r\n     * Example:\r\n     *\r\n     *      zippy.Function.compose(c, b, a)\r\n     *\r\n     * See {@link Function#compose}\r\n     */\r\n    compose: compose,\r\n\r\n    /**\r\n     * See {@link Function#self}\r\n     */\r\n    self: function(fn){\r\n        return fn\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#buffer}\r\n     */\r\n    buffer: buffer,\r\n\r\n    /**\r\n     * See {@link Function#delay}\r\n     */\r\n    delay: delay,\r\n\r\n    /**\r\n     * See {@link Function#defer}\r\n     * @param {Function} fn\r\n     * @param {Object} scope\r\n     */\r\n    defer:defer,\r\n\r\n    /**\r\n     * See {@link Function#skipArgs}\r\n     * @param {Function} fn\r\n     * @param {Number} [count=0] how many args to skip when calling the resulting function\r\n     * @return {Function} The function that will call the original fn without the first count args.\r\n     */\r\n    skipArgs: skipArgs,\r\n\r\n    /**\r\n     * See {@link Function#intercept}\r\n     */\r\n    intercept: function(fn, interceptedFn, withStopArgs){\r\n        return intercept(interceptedFn, fn, withStopArgs)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#throttle}\r\n     */\r\n    throttle: throttle,\r\n\r\n    /**\r\n     * See {@link Function#spread}\r\n     */\r\n    spread: spread,\r\n\r\n    /**\r\n     * See {@link Function#chain}\r\n     */\r\n    chain: function(fn, where, mainFn){\r\n        return chain(where, mainFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#before}\r\n     */\r\n    before: function(fn, otherFn){\r\n        return chain('before', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#after}\r\n     */\r\n    after: function(fn, otherFn){\r\n        return chain('after', otherFn, fn)\r\n    },\r\n\r\n    /**\r\n     * See {@link Function#curry}\r\n     */\r\n    curry: curry,\r\n\r\n    /**\r\n     * See {@link Function#once}\r\n     */\r\n    once: once,\r\n\r\n    /**\r\n     * See {@link Function#bindArgs}\r\n     */\r\n    bindArgs: bindArgs,\r\n\r\n    /**\r\n     * See {@link Function#bindArgsArray}\r\n     */\r\n    bindArgsArray: bindArgsArray,\r\n\r\n    /**\r\n     * See {@link Function#lockArgs}\r\n     */\r\n    lockArgs: lockArgs,\r\n\r\n    /**\r\n     * See {@link Function#lockArgsArray}\r\n     */\r\n    lockArgsArray: lockArgsArray,\r\n\r\n    bindFunctionsOf: bindFunctionsOf,\r\n\r\n    find: find,\r\n\r\n    findIndex: findIndex,\r\n\r\n    newify: require('./src/newify')\r\n}"
    },
    {
      "id": 125,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "name": "../react-menus/~/region/src/index.js",
      "size": 27185,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
      "profile": {
        "factory": 49,
        "building": 192
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 113,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/index.js",
          "module": "../react-menus/~/region/index.js",
          "moduleName": "../react-menus/~/region/index.js",
          "type": "cjs require",
          "userRequest": "./src",
          "loc": "1:17-33"
        }
      ],
      "source": "'use strict';\n\nvar hasOwn    = require('hasown')\nvar newify    = require('newify')\nvar copyUtils = require('copy-utils')\nvar copyList  = copyUtils.copyList\nvar copy      = copyUtils.copy\nvar isObject  = require('i-s').object\nvar EventEmitter = require('events').EventEmitter\nvar inherits = require('./inherits')\nvar VALIDATE = require('./validate')\n\n/**\n * @class Region\n *\n * The Region is an abstraction that allows the developer to refer to rectangles on the screen,\n * and move them around, make diffs and unions, detect intersections, compute areas, etc.\n *\n * ## Creating a region\n *      var region = require('region')({\n *          top  : 10,\n *          left : 10,\n *          bottom: 100,\n *          right : 100\n *      })\n *      //this region is a square, 90x90, starting from (10,10) to (100,100)\n *\n *      var second = require('region')({ top: 10, left: 100, right: 200, bottom: 60})\n *      var union  = region.getUnion(second)\n *\n *      //the \"union\" region is a union between \"region\" and \"second\"\n */\n\nvar POINT_POSITIONS = {\n        cy: 'YCenter',\n        cx: 'XCenter',\n        t : 'Top',\n        tc: 'TopCenter',\n        tl: 'TopLeft',\n        tr: 'TopRight',\n        b : 'Bottom',\n        bc: 'BottomCenter',\n        bl: 'BottomLeft',\n        br: 'BottomRight',\n        l : 'Left',\n        lc: 'LeftCenter',\n        r : 'Right',\n        rc: 'RightCenter',\n        c : 'Center'\n    }\n\n/**\n * @constructor\n *\n * Construct a new Region.\n *\n * Example:\n *\n *      var r = new Region({ top: 10, left: 20, bottom: 100, right: 200 })\n *\n *      //or, the same, but with numbers (can be used with new or without)\n *\n *      r = Region(10, 200, 100, 20)\n *\n *      //or, with width and height\n *\n *      r = Region({ top: 10, left: 20, width: 180, height: 90})\n *\n * @param {Number|Object} top The top pixel position, or an object with top, left, bottom, right properties. If an object is passed,\n * instead of having bottom and right, it can have width and height.\n *\n * @param {Number} right The right pixel position\n * @param {Number} bottom The bottom pixel position\n * @param {Number} left The left pixel position\n *\n * @return {Region} this\n */\nvar REGION = function(top, right, bottom, left){\n\n    if (!(this instanceof REGION)){\n        return newify(REGION, arguments)\n    }\n\n    EventEmitter.call(this)\n\n    if (isObject(top)){\n        copyList(top, this, ['top','right','bottom','left'])\n\n        if (top.bottom == null && top.height != null){\n            this.bottom = this.top + top.height\n        }\n        if (top.right == null && top.width != null){\n            this.right = this.left + top.width\n        }\n\n        if (top.emitChangeEvents){\n            this.emitChangeEvents = top.emitChangeEvents\n        }\n    } else {\n        this.top    = top\n        this.right  = right\n        this.bottom = bottom\n        this.left   = left\n    }\n\n    this[0] = this.left\n    this[1] = this.top\n\n    VALIDATE(this)\n}\n\ninherits(REGION, EventEmitter)\n\ncopy({\n\n    /**\n     * @cfg {Boolean} emitChangeEvents If this is set to true, the region\n     * will emit 'changesize' and 'changeposition' whenever the size or the position changs\n     */\n    emitChangeEvents: false,\n\n    /**\n     * Returns this region, or a clone of this region\n     * @param  {Boolean} [clone] If true, this method will return a clone of this region\n     * @return {Region}       This region, or a clone of this\n     */\n    getRegion: function(clone){\n        return clone?\n                    this.clone():\n                    this\n    },\n\n    /**\n     * Sets the properties of this region to those of the given region\n     * @param {Region/Object} reg The region or object to use for setting properties of this region\n     * @return {Region} this\n     */\n    setRegion: function(reg){\n\n        if (reg instanceof REGION){\n            this.set(reg.get())\n        } else {\n            this.set(reg)\n        }\n\n        return this\n    },\n\n    /**\n     * Returns true if this region is valid, false otherwise\n     *\n     * @param  {Region} region The region to check\n     * @return {Boolean}        True, if the region is valid, false otherwise.\n     * A region is valid if\n     *  * left <= right  &&\n     *  * top  <= bottom\n     */\n    validate: function(){\n        return REGION.validate(this)\n    },\n\n    _before: function(){\n        if (this.emitChangeEvents){\n            return copyList(this, {}, ['left','top','bottom','right'])\n        }\n    },\n\n    _after: function(before){\n        if (this.emitChangeEvents){\n\n            if(this.top != before.top || this.left != before.left) {\n                this.emitPositionChange()\n            }\n\n            if(this.right != before.right || this.bottom != before.bottom) {\n                this.emitSizeChange()\n            }\n        }\n    },\n\n    notifyPositionChange: function(){\n        this.emit('changeposition', this)\n    },\n\n    emitPositionChange: function(){\n        this.notifyPositionChange()\n    },\n\n    notifySizeChange: function(){\n        this.emit('changesize', this)\n    },\n\n    emitSizeChange: function(){\n        this.notifySizeChange()\n    },\n\n    /**\n     * Add the given amounts to each specified side. Example\n     *\n     *      region.add({\n     *          top: 50,    //add 50 px to the top side\n     *          bottom: -100    //substract 100 px from the bottom side\n     *      })\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    add: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            this[direction] += directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * The same as {@link #add}, but substracts the given values\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @return {Region} this\n     */\n    substract: function(directions){\n\n        var before = this._before()\n        var direction\n\n        for (direction in directions) if (hasOwn(directions, direction) ) {\n            this[direction] -= directions[direction]\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the size of the region.\n     * @return {Object} An object with {width, height}, corresponding to the width and height of the region\n     */\n    getSize: function(){\n        return {\n            width  : this.width,\n            height : this.height\n        }\n    },\n\n    /**\n     * Move the region to the given position and keeps the region width and height.\n     *\n     * @param {Object} position An object with {top, left} properties. The values in {top,left} are used to move the region by the given amounts.\n     * @param {Number} [position.left]\n     * @param {Number} [position.top]\n     *\n     * @return {Region} this\n     */\n    setPosition: function(position){\n        var width  = this.width\n        var height = this.height\n\n        if (position.left != undefined){\n            position.right  = position.left + width\n        }\n\n        if (position.top != undefined){\n            position.bottom = position.top  + height\n        }\n\n        return this.set(position)\n    },\n\n    /**\n     * Sets both the height and the width of this region to the given size.\n     *\n     * @param {Number} size The new size for the region\n     * @return {Region} this\n     */\n    setSize: function(size){\n        if (size.height != undefined && size.width != undefined){\n            return this.set({\n                right  : this.left + size.width,\n                bottom : this.top  + size.height\n            })\n        }\n\n        if (size.width != undefined){\n            this.setWidth(size.width)\n        }\n\n        if (size.height != undefined){\n            this.setHeight(size.height)\n        }\n\n        return this\n    },\n\n\n\n    /**\n     * @chainable\n     *\n     * Sets the width of this region\n     * @param {Number} width The new width for this region\n     * @return {Region} this\n     */\n    setWidth: function(width){\n        return this.set({\n            right: this.left + width\n        })\n    },\n\n    /**\n     * @chainable\n     *\n     * Sets the height of this region\n     * @param {Number} height The new height for this region\n     * @return {Region} this\n     */\n    setHeight: function(height){\n        return this.set({\n            bottom: this.top + height\n        })\n    },\n\n    /**\n     * Sets the given properties on this region\n     *\n     * @param {Object} directions an object containing top, left, and EITHER bottom, right OR width, height\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @param {Number} [directions.bottom]\n     * @param {Number} [directions.right]\n     *\n     * @param {Number} [directions.width]\n     * @param {Number} [directions.height]\n     *\n     *\n     * @return {Region} this\n     */\n    set: function(directions){\n        var before = this._before()\n\n        copyList(directions, this, ['left','top','bottom','right'])\n\n        if (directions.bottom == null && directions.height != null){\n            this.bottom = this.top + directions.height\n        }\n        if (directions.right == null && directions.width != null){\n            this.right = this.left + directions.width\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Retrieves the given property from this region. If no property is given, return an object\n     * with {left, top, right, bottom}\n     *\n     * @param {String} [dir] the property to retrieve from this region\n     * @return {Number/Object}\n     */\n    get: function(dir){\n        return dir? this[dir]:\n                    copyList(this, {}, ['left','right','top','bottom'])\n    },\n\n    /**\n     * Shifts this region to either top, or left or both.\n     * Shift is similar to {@link #add} by the fact that it adds the given dimensions to top/left sides, but also adds the given dimensions\n     * to bottom and right\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    shift: function(directions){\n\n        var before = this._before()\n\n        if (directions.top){\n            this.top    += directions.top\n            this.bottom += directions.top\n        }\n\n        if (directions.left){\n            this.left  += directions.left\n            this.right += directions.left\n        }\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Same as {@link #shift}, but substracts the given values\n     * @chainable\n     *\n     * @param {Object} directions\n     * @param {Number} [directions.top]\n     * @param {Number} [directions.left]\n     *\n     * @return {Region} this\n     */\n    unshift: function(directions){\n\n        if (directions.top){\n            directions.top *= -1\n        }\n\n        if (directions.left){\n            directions.left *= -1\n        }\n\n        return this.shift(directions)\n    },\n\n    /**\n     * Compare this region and the given region. Return true if they have all the same size and position\n     * @param  {Region} region The region to compare with\n     * @return {Boolean}       True if this and region have same size and position\n     */\n    equals: function(region){\n        return this.equalsPosition(region) && this.equalsSize(region)\n    },\n\n    /**\n     * Returns true if this region has the same bottom,right properties as the given region\n     * @param  {Region/Object} size The region to compare against\n     * @return {Boolean}       true if this region is the same size as the given size\n     */\n    equalsSize: function(size){\n        var isInstance = size instanceof REGION\n\n        var s = {\n            width: size.width == null && isInstance?\n                    size.getWidth():\n                    size.width,\n\n            height: size.height == null && isInstance?\n                    size.getHeight():\n                    size.height\n        }\n        return this.getWidth() == s.width && this.getHeight() == s.height\n    },\n\n    /**\n     * Returns true if this region has the same top,left properties as the given region\n     * @param  {Region} region The region to compare against\n     * @return {Boolean}       true if this.top == region.top and this.left == region.left\n     */\n    equalsPosition: function(region){\n        return this.top == region.top && this.left == region.left\n    },\n\n    /**\n     * Adds the given ammount to the left side of this region\n     * @param {Number} left The ammount to add\n     * @return {Region} this\n     */\n    addLeft: function(left){\n        var before = this._before()\n\n        this.left = this[0] = this.left + left\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the top side of this region\n     * @param {Number} top The ammount to add\n     * @return {Region} this\n     */\n    addTop: function(top){\n        var before = this._before()\n\n        this.top = this[1] = this.top + top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the bottom side of this region\n     * @param {Number} bottom The ammount to add\n     * @return {Region} this\n     */\n    addBottom: function(bottom){\n        var before = this._before()\n\n        this.bottom += bottom\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Adds the given ammount to the right side of this region\n     * @param {Number} right The ammount to add\n     * @return {Region} this\n     */\n    addRight: function(right){\n        var before = this._before()\n\n        this.right += right\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Minimize the top side.\n     * @return {Region} this\n     */\n    minTop: function(){\n        return this.expand({top: 1})\n    },\n    /**\n     * Minimize the bottom side.\n     * @return {Region} this\n     */\n    maxBottom: function(){\n        return this.expand({bottom: 1})\n    },\n    /**\n     * Minimize the left side.\n     * @return {Region} this\n     */\n    minLeft: function(){\n        return this.expand({left: 1})\n    },\n    /**\n     * Maximize the right side.\n     * @return {Region} this\n     */\n    maxRight: function(){\n        return this.expand({right: 1})\n    },\n\n    /**\n     * Expands this region to the dimensions of the given region, or the document region, if no region is expanded.\n     * But only expand the given sides (any of the four can be expanded).\n     *\n     * @param {Object} directions\n     * @param {Boolean} [directions.top]\n     * @param {Boolean} [directions.bottom]\n     * @param {Boolean} [directions.left]\n     * @param {Boolean} [directions.right]\n     *\n     * @param {Region} [region] the region to expand to, defaults to the document region\n     * @return {Region} this region\n     */\n    expand: function(directions, region){\n        var docRegion = region || REGION.getDocRegion()\n        var list      = []\n        var direction\n        var before = this._before()\n\n        for (direction in directions) if ( hasOwn(directions, direction) ) {\n            list.push(direction)\n        }\n\n        copyList(docRegion, this, list)\n\n        this[0] = this.left\n        this[1] = this.top\n\n        this._after(before)\n\n        return this\n    },\n\n    /**\n     * Returns a clone of this region\n     * @return {Region} A new region, with the same position and dimension as this region\n     */\n    clone: function(){\n        return new REGION({\n                    top    : this.top,\n                    left   : this.left,\n                    right  : this.right,\n                    bottom : this.bottom\n                })\n    },\n\n    /**\n     * Returns true if this region contains the given point\n     * @param {Number/Object} x the x coordinate of the point\n     * @param {Number} [y] the y coordinate of the point\n     *\n     * @return {Boolean} true if this region constains the given point, false otherwise\n     */\n    containsPoint: function(x, y){\n        if (arguments.length == 1){\n            y = x.y\n            x = x.x\n        }\n\n        return this.left <= x  &&\n               x <= this.right &&\n               this.top <= y   &&\n               y <= this.bottom\n    },\n\n    /**\n     *\n     * @param region\n     *\n     * @return {Boolean} true if this region contains the given region, false otherwise\n     */\n    containsRegion: function(region){\n        return this.containsPoint(region.left, region.top)    &&\n               this.containsPoint(region.right, region.bottom)\n    },\n\n    /**\n     * Returns an object with the difference for {top, bottom} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {top,bottom}\n     */\n    diffHeight: function(region){\n        return this.diff(region, {top: true, bottom: true})\n    },\n\n    /**\n     * Returns an object with the difference for {left, right} positions betwen this and the given region,\n     *\n     * See {@link #diff}\n     * @param  {Region} region The region to use for diff\n     * @return {Object}        {left,right}\n     */\n    diffWidth: function(region){\n        return this.diff(region, {left: true, right: true})\n    },\n\n    /**\n     * Returns an object with the difference in sizes for the given directions, between this and region\n     *\n     * @param  {Region} region     The region to use for diff\n     * @param  {Object} directions An object with the directions to diff. Can have any of the following keys:\n     *  * left\n     *  * right\n     *  * top\n     *  * bottom\n     *\n     * @return {Object} and object with the same keys as the directions object, but the values being the\n     * differences between this region and the given region\n     */\n    diff: function(region, directions){\n        var result = {}\n        var dirName\n\n        for (dirName in directions) if ( hasOwn(directions, dirName) ) {\n            result[dirName] = this[dirName] - region[dirName]\n        }\n\n        return result\n    },\n\n    /**\n     * Returns the position, in {left,top} properties, of this region\n     *\n     * @return {Object} {left,top}\n     */\n    getPosition: function(){\n        return {\n            left: this.left,\n            top : this.top\n        }\n    },\n\n    /**\n     * Returns the point at the given position from this region.\n     *\n     * @param {String} position Any of:\n     *\n     *  * 'cx' - See {@link #getPointXCenter}\n     *  * 'cy' - See {@link #getPointYCenter}\n     *  * 'b'  - See {@link #getPointBottom}\n     *  * 'bc' - See {@link #getPointBottomCenter}\n     *  * 'l'  - See {@link #getPointLeft}F\n     *  * 'lc' - See {@link #getPointLeftCenter}\n     *  * 't'  - See {@link #getPointTop}\n     *  * 'tc' - See {@link #getPointTopCenter}\n     *  * 'r'  - See {@link #getPointRight}\n     *  * 'rc' - See {@link #getPointRightCenter}\n     *  * 'c'  - See {@link #getPointCenter}\n     *  * 'tl' - See {@link #getPointTopLeft}\n     *  * 'bl' - See {@link #getPointBottomLeft}\n     *  * 'br' - See {@link #getPointBottomRight}\n     *  * 'tr' - See {@link #getPointTopRight}\n     *\n     * @param {Boolean} asLeftTop\n     *\n     * @return {Object} either an object with {x,y} or {left,top} if asLeftTop is true\n     */\n    getPoint: function(position, asLeftTop){\n\n        //<debug>\n        if (!POINT_POSITIONS[position]) {\n            console.warn('The position ', position, ' could not be found! Available options are tl, bl, tr, br, l, r, t, b.');\n        }\n        //</debug>\n\n        var method = 'getPoint' + POINT_POSITIONS[position],\n            result = this[method]()\n\n        if (asLeftTop){\n            return {\n                left : result.x,\n                top  : result.y\n            }\n        }\n\n        return result\n    },\n\n    /**\n     * Returns a point with x = null and y being the middle of the left region segment\n     * @return {Object} {x,y}\n     */\n    getPointYCenter: function(){\n        return { x: null, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x being the middle of the top region segment\n     * @return {Object} {x,y}\n     */\n    getPointXCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: null }\n    },\n\n    /**\n     * Returns a point with x = null and y the region top position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointTop: function(){\n        return { x: null, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region top segment\n     * @return {Object} {x,y}\n     */\n    getPointTopCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top }\n    },\n\n    /**\n     * Returns a point that is the top-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopLeft: function(){\n        return { x: this.left, y: this.top}\n    },\n\n    /**\n     * Returns a point that is the top-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointTopRight: function(){\n        return { x: this.right, y: this.top}\n    },\n\n    /**\n     * Returns a point with x = null and y the region bottom position on the y axis\n     * @return {Object} {x,y}\n     */\n    getPointBottom: function(){\n        return { x: null, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region bottom segment\n     * @return {Object} {x,y}\n     */\n    getPointBottomCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.bottom }\n    },\n\n    /**\n     * Returns a point that is the bottom-left point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomLeft: function(){\n        return { x: this.left, y: this.bottom}\n    },\n\n    /**\n     * Returns a point that is the bottom-right point of the region\n     * @return {Object} {x,y}\n     */\n    getPointBottomRight: function(){\n        return { x: this.right, y: this.bottom}\n    },\n\n    /**\n     * Returns a point with y = null and x the region left position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointLeft: function(){\n        return { x: this.left, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region left segment\n     * @return {Object} {x,y}\n     */\n    getPointLeftCenter: function(){\n        return { x: this.left, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point with y = null and x the region right position on the x axis\n     * @return {Object} {x,y}\n     */\n    getPointRight: function(){\n        return { x: this.right, y: null }\n    },\n\n    /**\n     * Returns a point that is the middle point of the region right segment\n     * @return {Object} {x,y}\n     */\n    getPointRightCenter: function(){\n        return { x: this.right, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * Returns a point that is the center of the region\n     * @return {Object} {x,y}\n     */\n    getPointCenter: function(){\n        return { x: this.left + this.getWidth() / 2, y: this.top + this.getHeight() / 2 }\n    },\n\n    /**\n     * @return {Number} returns the height of the region\n     */\n    getHeight: function(){\n        return this.bottom - this.top\n    },\n\n    /**\n     * @return {Number} returns the width of the region\n     */\n    getWidth: function(){\n        return this.right - this.left\n    },\n\n    /**\n     * @return {Number} returns the top property of the region\n     */\n    getTop: function(){\n        return this.top\n    },\n\n    /**\n     * @return {Number} returns the left property of the region\n     */\n    getLeft: function(){\n        return this.left\n    },\n\n    /**\n     * @return {Number} returns the bottom property of the region\n     */\n    getBottom: function(){\n        return this.bottom\n    },\n\n    /**\n     * @return {Number} returns the right property of the region\n     */\n    getRight: function(){\n        return this.right\n    },\n\n    /**\n     * Returns the area of the region\n     * @return {Number} the computed area\n     */\n    getArea: function(){\n        return this.getWidth() * this.getHeight()\n    },\n\n    constrainTo: function(contrain){\n        var intersect = this.getIntersection(contrain)\n        var shift\n\n        if (!intersect || !intersect.equals(this)){\n\n            var contrainWidth  = contrain.getWidth(),\n                contrainHeight = contrain.getHeight()\n\n            if (this.getWidth() > contrainWidth){\n                this.left = contrain.left\n                this.setWidth(contrainWidth)\n            }\n\n            if (this.getHeight() > contrainHeight){\n                this.top = contrain.top\n                this.setHeight(contrainHeight)\n            }\n\n            shift = {}\n\n            if (this.right > contrain.right){\n                shift.left = contrain.right - this.right\n            }\n\n            if (this.bottom > contrain.bottom){\n                shift.top = contrain.bottom - this.bottom\n            }\n\n            if (this.left < contrain.left){\n                shift.left = contrain.left - this.left\n            }\n\n            if (this.top < contrain.top){\n                shift.top = contrain.top - this.top\n            }\n\n            this.shift(shift)\n\n            return true\n        }\n\n        return false\n    },\n\n    __IS_REGION: true\n\n    /**\n     * @property {Number} top\n     */\n\n    /**\n     * @property {Number} right\n     */\n\n    /**\n     * @property {Number} bottom\n     */\n\n    /**\n     * @property {Number} left\n     */\n\n    /**\n     * @property {Number} [0] the top property\n     */\n\n    /**\n     * @property {Number} [1] the left property\n     */\n\n    /**\n     * @method getIntersection\n     * Returns a region that is the intersection of this region and the given region\n     * @param  {Region} region The region to intersect with\n     * @return {Region}        The intersection region\n     */\n\n    /**\n     * @method getUnion\n     * Returns a region that is the union of this region with the given region\n     * @param  {Region} region  The region to make union with\n     * @return {Region}        The union region. The smallest region that contains both this and the given region.\n     */\n\n}, REGION.prototype)\n\nObject.defineProperties(REGION.prototype, {\n    width: {\n        get: function(){\n            return this.getWidth()\n        },\n        set: function(width){\n            return this.setWidth(width)\n        }\n    },\n    height: {\n        get: function(){\n            return this.getHeight()\n        },\n        set: function(height){\n            return this.setHeight(height)\n        }\n    }\n})\n\nrequire('./statics')(REGION)\n\nmodule.exports = REGION"
    },
    {
      "id": 126,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
      "name": "../react-menus/lib/align/index.js",
      "size": 854,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
      "profile": {
        "factory": 49,
        "building": 207,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 117,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/getSubMenuPositionStyle.js",
          "module": "../react-menus/lib/getSubMenuPositionStyle.js",
          "moduleName": "../react-menus/lib/getSubMenuPositionStyle.js",
          "type": "cjs require",
          "userRequest": "./align",
          "loc": "5:13-31"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region-align')\nvar getConstrainRegion = require('./getConstrainRegion')\n\nmodule.exports = function(props, subMenuRegion, targetAlignRegion, constrainTo){\n    var constrainRegion = getConstrainRegion.call(this, constrainTo)\n\n    if (!constrainRegion){\n        return\n    }\n\n\n\n    if (typeof props.alignSubMenu === 'function'){\n        props.alignSubMenu(subMenuRegion, targetAlignRegion, constrainRegion)\n    } else {\n        var pos = subMenuRegion.alignTo(targetAlignRegion, [\n            //align to right\n            'tl-tr','bl-br',\n\n            //align to left\n            'tr-tl', 'br-bl'\n        ], { constrain: constrainRegion })\n\n        return (pos == 'tl-tr' || pos == 'tr-tl')?\n                    //align downwards\n                    1:\n\n                    //align upwards\n                    -1\n    }\n}"
    },
    {
      "id": 127,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-datagrid/node_modules/webpack/node_modules/node-libs-browser/node_modules/events/events.js",
      "name": "(webpack)/~/node-libs-browser/~/events/events.js",
      "size": 8251,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 34,
        "building": 30
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "events",
          "loc": "9:19-36"
        }
      ],
      "source": "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      }\n      throw TypeError('Uncaught, unspecified \"error\" event.');\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        len = arguments.length;\n        args = new Array(len - 1);\n        for (i = 1; i < len; i++)\n          args[i - 1] = arguments[i];\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    len = arguments.length;\n    args = new Array(len - 1);\n    for (i = 1; i < len; i++)\n      args[i - 1] = arguments[i];\n\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    var m;\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  var ret;\n  if (!emitter._events || !emitter._events[type])\n    ret = 0;\n  else if (isFunction(emitter._events[type]))\n    ret = 1;\n  else\n    ret = emitter._events[type].length;\n  return ret;\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n"
    },
    {
      "id": 128,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/inherits.js",
      "name": "../react-menus/~/region/src/inherits.js",
      "size": 315,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 62,
        "building": 33
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./inherits",
          "loc": "10:15-36"
        }
      ],
      "source": "'use strict';\n\nmodule.exports = function(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value       : ctor,\n            enumerable  : false,\n            writable    : true,\n            configurable: true\n        }\n    })\n}"
    },
    {
      "id": 129,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/validate.js",
      "name": "../react-menus/~/region/src/validate.js",
      "size": 583,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 63,
        "building": 70
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./validate",
          "loc": "11:15-36"
        },
        {
          "moduleId": 130,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
          "module": "../react-menus/~/region/src/statics.js",
          "moduleName": "../react-menus/~/region/src/statics.js",
          "type": "cjs require",
          "userRequest": "./validate",
          "loc": "4:15-36"
        }
      ],
      "source": "'use strict';\n\n/**\n * @static\n * Returns true if the given region is valid, false otherwise.\n * @param  {Region} region The region to check\n * @return {Boolean}        True, if the region is valid, false otherwise.\n * A region is valid if\n *  * left <= right  &&\n *  * top  <= bottom\n */\nmodule.exports = function validate(region){\n\n    var isValid = true\n\n    if (region.right < region.left){\n        isValid = false\n        region.right = region.left\n    }\n\n    if (region.bottom < region.top){\n        isValid = false\n        region.bottom = region.top\n    }\n\n    return isValid\n}"
    },
    {
      "id": 130,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
      "name": "../react-menus/~/region/src/statics.js",
      "size": 6712,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 64,
        "building": 64,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "./statics",
          "loc": "1032:0-20"
        }
      ],
      "source": "'use strict';\n\nvar hasOwn   = require('hasown')\nvar VALIDATE = require('./validate')\n\nmodule.exports = function(REGION){\n\n    var MAX = Math.max\n    var MIN = Math.min\n\n    var statics = {\n        init: function(){\n            var exportAsNonStatic = {\n                getIntersection      : true,\n                getIntersectionArea  : true,\n                getIntersectionHeight: true,\n                getIntersectionWidth : true,\n                getUnion             : true\n            }\n            var thisProto = REGION.prototype\n            var newName\n\n            var exportHasOwn = hasOwn(exportAsNonStatic)\n            var methodName\n\n            for (methodName in exportAsNonStatic) if (exportHasOwn(methodName)) {\n                newName = exportAsNonStatic[methodName]\n                if (typeof newName != 'string'){\n                    newName = methodName\n                }\n\n                ;(function(proto, methodName, protoMethodName){\n\n                    proto[methodName] = function(region){\n                        //<debug>\n                        if (!REGION[protoMethodName]){\n                            console.warn('cannot find method ', protoMethodName,' on ', REGION)\n                        }\n                        //</debug>\n                        return REGION[protoMethodName](this, region)\n                    }\n\n                })(thisProto, newName, methodName);\n            }\n        },\n\n        validate: VALIDATE,\n\n        /**\n         * Returns the region corresponding to the documentElement\n         * @return {Region} The region corresponding to the documentElement. This region is the maximum region visible on the screen.\n         */\n        getDocRegion: function(){\n            return REGION.fromDOM(document.documentElement)\n        },\n\n        from: function(reg){\n            if (reg.__IS_REGION){\n                return reg\n            }\n\n            if (typeof document != 'undefined'){\n                if (typeof HTMLElement != 'undefined' && reg instanceof HTMLElement){\n                    return REGION.fromDOM(reg)\n                }\n\n                if (reg.type && typeof reg.pageX !== 'undefined' && typeof reg.pageY !== 'undefined'){\n                    return REGION.fromEvent(reg)\n                }\n            }\n\n            return REGION(reg)\n        },\n\n        fromEvent: function(event){\n            return REGION.fromPoint({\n                x: event.pageX,\n                y: event.pageY\n            })\n        },\n\n        fromDOM: function(dom){\n            var rect = dom.getBoundingClientRect()\n            // var docElem = document.documentElement\n            // var win     = window\n\n            // var top  = rect.top + win.pageYOffset - docElem.clientTop\n            // var left = rect.left + win.pageXOffset - docElem.clientLeft\n\n            return new REGION({\n                top   : rect.top,\n                left  : rect.left,\n                bottom: rect.bottom,\n                right : rect.right\n            })\n        },\n\n        /**\n         * @static\n         * Returns a region that is the intersection of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region/Boolean}        The intersection region or false if no intersection found\n         */\n        getIntersection: function(first, second){\n\n            var area = this.getIntersectionArea(first, second)\n\n            if (area){\n                return new REGION(area)\n            }\n\n            return false\n        },\n\n        getIntersectionWidth: function(first, second){\n            var minRight  = MIN(first.right, second.right)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (maxLeft < minRight){\n                return minRight  - maxLeft\n            }\n\n            return 0\n        },\n\n        getIntersectionHeight: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minBottom = MIN(first.bottom,second.bottom)\n\n            if (maxTop  < minBottom){\n                return minBottom - maxTop\n            }\n\n            return 0\n        },\n\n        getIntersectionArea: function(first, second){\n            var maxTop    = MAX(first.top,   second.top)\n            var minRight  = MIN(first.right, second.right)\n            var minBottom = MIN(first.bottom,second.bottom)\n            var maxLeft   = MAX(first.left,  second.left)\n\n            if (\n                    maxTop  < minBottom &&\n                    maxLeft < minRight\n                ){\n                return {\n                    top    : maxTop,\n                    right  : minRight,\n                    bottom : minBottom,\n                    left   : maxLeft,\n\n                    width  : minRight  - maxLeft,\n                    height : minBottom - maxTop\n                }\n            }\n\n            return false\n        },\n\n        /**\n         * @static\n         * Returns a region that is the union of the given two regions\n         * @param  {Region} first  The first region\n         * @param  {Region} second The second region\n         * @return {Region}        The union region. The smallest region that contains both given regions.\n         */\n        getUnion: function(first, second){\n            var top    = MIN(first.top,   second.top)\n            var right  = MAX(first.right, second.right)\n            var bottom = MAX(first.bottom,second.bottom)\n            var left   = MIN(first.left,  second.left)\n\n            return new REGION(top, right, bottom, left)\n        },\n\n        /**\n         * @static\n         * Returns a region. If the reg argument is a region, returns it, otherwise return a new region built from the reg object.\n         *\n         * @param  {Region} reg A region or an object with either top, left, bottom, right or\n         * with top, left, width, height\n         * @return {Region} A region\n         */\n        getRegion: function(reg){\n            return REGION.from(reg)\n        },\n\n        /**\n         * Creates a region that corresponds to a point.\n         *\n         * @param  {Object} xy The point\n         * @param  {Number} xy.x\n         * @param  {Number} xy.y\n         *\n         * @return {Region}    The new region, with top==xy.y, bottom = xy.y and left==xy.x, right==xy.x\n         */\n        fromPoint: function(xy){\n            return new REGION({\n                        top    : xy.y,\n                        bottom : xy.y,\n                        left   : xy.x,\n                        right  : xy.x\n                    })\n        }\n    }\n\n    Object.keys(statics).forEach(function(key){\n        REGION[key] = statics[key]\n    })\n\n    REGION.init()\n}"
    },
    {
      "id": 131,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/curry.js",
      "name": "../react-menus/~/functionally/src/curry.js",
      "size": 581,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 151,
        "building": 61
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/curry",
          "loc": "78:16-38"
        },
        {
          "moduleId": 139,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/map.js",
          "module": "../react-menus/~/functionally/src/map.js",
          "moduleName": "../react-menus/~/functionally/src/map.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "3:12-30"
        },
        {
          "moduleId": 140,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/dot.js",
          "module": "../react-menus/~/functionally/src/dot.js",
          "moduleName": "../react-menus/~/functionally/src/dot.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "3:12-30"
        },
        {
          "moduleId": 141,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/maxArgs.js",
          "module": "../react-menus/~/functionally/src/maxArgs.js",
          "moduleName": "../react-menus/~/functionally/src/maxArgs.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "4:12-30"
        },
        {
          "moduleId": 142,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
          "module": "../react-menus/~/functionally/src/newify.js",
          "moduleName": "../react-menus/~/functionally/src/newify.js",
          "type": "cjs require",
          "userRequest": "./curry",
          "loc": "4:13-31"
        }
      ],
      "source": "'use strict'\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\nmodule.exports = curry"
    },
    {
      "id": 132,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/compose.js",
      "name": "../react-menus/~/functionally/src/compose.js",
      "size": 558,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 153,
        "building": 62
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/compose",
          "loc": "149:18-42"
        }
      ],
      "source": "'use strict'\n\nfunction composeTwo(f, g) {\n    return function () {\n        return f(g.apply(this, arguments))\n    }\n}\n\n/*\n * @param {Function...} an enumeration of functions, each consuming the result of the following function.\n *\n * For example: compose(c, b, a)(1,4) == c(b(a(1,4)))\n *\n * @return the result of the first function in the enumeration\n */\nmodule.exports = function(){\n\n    var args = arguments\n    var len  = args.length\n    var i    = 0\n    var f    = args[0]\n\n    while (++i < len) {\n        f = composeTwo(f, args[i])\n    }\n\n    return f\n}"
    },
    {
      "id": 133,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/chain.js",
      "name": "../react-menus/~/functionally/src/chain.js",
      "size": 352,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 153,
        "building": 64
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/chain",
          "loc": "151:16-38"
        }
      ],
      "source": "'use strict'\n\nfunction chain(where, fn, secondFn){\n\n    return function(){\n        if (where === 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        var result = fn.apply(this, arguments)\n\n        if (where !== 'before'){\n            secondFn.apply(this, arguments)\n        }\n\n        return result\n    }\n}\n\nmodule.exports = chain"
    },
    {
      "id": 134,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/once.js",
      "name": "../react-menus/~/functionally/src/once.js",
      "size": 263,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 154,
        "building": 65
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/once",
          "loc": "153:15-36"
        }
      ],
      "source": "'use once'\n\nfunction once(fn, scope){\n\n    var called\n    var result\n\n    return function(){\n        if (called){\n            return result\n        }\n\n        called = true\n\n        return result = fn.apply(scope || this, arguments)\n    }\n}\n\nmodule.exports = once"
    },
    {
      "id": 135,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgsArray.js",
      "name": "../react-menus/~/functionally/src/bindArgsArray.js",
      "size": 298,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 155,
        "building": 66
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/bindArgsArray",
          "loc": "155:24-54"
        },
        {
          "moduleId": 136,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgs.js",
          "module": "../react-menus/~/functionally/src/bindArgs.js",
          "moduleName": "../react-menus/~/functionally/src/bindArgs.js",
          "type": "cjs require",
          "userRequest": "./bindArgsArray",
          "loc": "4:20-46"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n    return function(){\n        var thisArgs = SLICE.call(args || [])\n\n        if (arguments.length){\n            thisArgs.push.apply(thisArgs, arguments)\n        }\n\n        return fn.apply(this, thisArgs)\n    }\n}"
    },
    {
      "id": 136,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/bindArgs.js",
      "name": "../react-menus/~/functionally/src/bindArgs.js",
      "size": 182,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 155,
        "building": 68,
        "dependencies": 31
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/bindArgs",
          "loc": "157:19-44"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar bindArgsArray = require('./bindArgsArray')\n\nmodule.exports = function(fn){\n    return bindArgsArray(fn, SLICE.call(arguments,1))\n}"
    },
    {
      "id": 137,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgsArray.js",
      "name": "../react-menus/~/functionally/src/lockArgsArray.js",
      "size": 241,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 155,
        "building": 74
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/lockArgsArray",
          "loc": "159:24-54"
        },
        {
          "moduleId": 138,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgs.js",
          "module": "../react-menus/~/functionally/src/lockArgs.js",
          "moduleName": "../react-menus/~/functionally/src/lockArgs.js",
          "type": "cjs require",
          "userRequest": "./lockArgsArray",
          "loc": "4:20-46"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\n\nmodule.exports = function(fn, args){\n\n    return function(){\n        if (!Array.isArray(args)){\n            args = SLICE.call(args || [])\n        }\n\n        return fn.apply(this, args)\n    }\n}"
    },
    {
      "id": 138,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/lockArgs.js",
      "name": "../react-menus/~/functionally/src/lockArgs.js",
      "size": 183,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 156,
        "building": 74,
        "dependencies": 24
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/lockArgs",
          "loc": "161:19-44"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar lockArgsArray = require('./lockArgsArray')\n\nmodule.exports = function(fn){\n    return lockArgsArray(fn, SLICE.call(arguments, 1))\n}"
    },
    {
      "id": 139,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/map.js",
      "name": "../react-menus/~/functionally/src/map.js",
      "size": 192,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 156,
        "building": 79,
        "dependencies": 19
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/map",
          "loc": "519:9-29"
        }
      ],
      "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(fn, value){\n    return value != undefined && typeof value.map?\n            value.map(fn):\n            fn(value)\n})"
    },
    {
      "id": 140,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/dot.js",
      "name": "../react-menus/~/functionally/src/dot.js",
      "size": 148,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 157,
        "building": 83,
        "dependencies": 14
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/dot",
          "loc": "521:9-29"
        }
      ],
      "source": "'use strict'\n\nvar curry = require('./curry')\n\nmodule.exports = curry(function(prop, value){\n    return value != undefined? value[prop]: undefined\n})"
    },
    {
      "id": 141,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/maxArgs.js",
      "name": "../react-menus/~/functionally/src/maxArgs.js",
      "size": 211,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 157,
        "building": 87,
        "dependencies": 10
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/maxArgs",
          "loc": "523:13-37"
        }
      ],
      "source": "'use strict'\n\nvar SLICE = Array.prototype.slice\nvar curry = require('./curry')\n\nmodule.exports = function(fn, count){\n    return function(){\n        return fn.apply(this, SLICE.call(arguments, 0, count))\n    }\n}"
    },
    {
      "id": 142,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
      "name": "../react-menus/~/functionally/src/newify.js",
      "size": 108,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
      "profile": {
        "factory": 157,
        "building": 90,
        "dependencies": 6
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 124,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/index.js",
          "module": "../react-menus/~/functionally/index.js",
          "moduleName": "../react-menus/~/functionally/index.js",
          "type": "cjs require",
          "userRequest": "./src/newify",
          "loc": "642:12-35"
        }
      ],
      "source": "'use strict'\n\nvar newify = require('newify')\nvar curry  = require('./curry')\n\nmodule.exports = curry(newify)"
    },
    {
      "id": 143,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "name": "../react-menus/~/region/~/copy-utils/index.js",
      "size": 6752,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 91,
        "building": 106
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "copy-utils",
          "loc": "5:16-37"
        }
      ],
      "source": "module.exports = function(){\n\n    'use strict'\n\n    var HAS_OWN       = Object.prototype.hasOwnProperty,\n        STR_OBJECT    = 'object',\n        STR_UNDEFINED = 'undefined'\n\n    return {\n\n        /**\n         * Copies all properties from source to destination\n         *\n         *      copy({name: 'jon',age:5}, this);\n         *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copy: require('./copy'),\n\n        /**\n         * Copies all properties from source to destination, if the property does not exist into the destination\n         *\n         *      copyIf({name: 'jon',age:5}, {age:7})\n         *      // => { name: 'jon', age: 7}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         *\n         * @return {Object} destination\n         */\n        copyIf: require('./copyIf'),\n\n        /**\n         * Copies all properties from source to a new object, with the given value. This object is returned\n         *\n         *      copyAs({name: 'jon',age:5})\n         *      // => the resulting object will have the 'name' and 'age' properties set to 1\n         *\n         * @param {Object} source\n         * @param {Object/Number/String} [value=1]\n         *\n         * @return {Object} destination\n         */\n        copyAs: function(source, value){\n\n            var destination = {}\n\n            value = value || 1\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) ) {\n                    destination[i] = value\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies all properties named in the list, from source to destination\n         *\n         *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n         *      // => {name: 'jon', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyList: require('./copyList'),\n\n        /**\n         * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n         *\n         *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n         *      // => {name: 'jon', age: 10}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Array} list the array with the names of the properties to copy\n         *\n         * @return {Object} destination\n         */\n        copyListIf: require('./copyListIf'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination\n         *\n         *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n         *      // => {name: 'jon', age: 5, theYear: 2006}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeys: require('./copyKeys'),\n\n        /**\n         * Copies all properties named in the namedKeys, from source to destination,\n         * but only if the property does not already exist in the destination object\n         *\n         *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n         *      // => {aname: 'test', age: 5}\n         *\n         * @param {Object} source\n         * @param {Object} destination\n         * @param {Object} namedKeys an object with keys denoting the properties to be copied\n         *\n         * @return {Object} destination\n         */\n        copyKeysIf: require('./copyKeysIf'),\n\n        copyExceptKeys: function(source, destination, exceptKeys){\n            destination = destination || {}\n            exceptKeys  = exceptKeys  || {}\n\n            if (source != null && typeof source === STR_OBJECT ){\n\n                for (var i in source) if ( HAS_OWN.call(source, i) && !HAS_OWN.call(exceptKeys, i) ) {\n\n                    destination[i] = source[i]\n                }\n\n            }\n\n            return destination\n        },\n\n        /**\n         * Copies the named keys from source to destination.\n         * For the keys that are functions, copies the functions bound to the source\n         *\n         * @param  {Object} source      The source object\n         * @param  {Object} destination The target object\n         * @param  {Object} namedKeys   An object with the names of the keys to copy The values from the keys in this object\n         *                              need to be either numbers or booleans if you want to copy the property under the same name,\n         *                              or a string if you want to copy the property under a different name\n         * @return {Object}             Returns the destination object\n         */\n        bindCopyKeys: function(source, destination, namedKeys){\n            if (arguments.length == 2){\n                namedKeys = destination\n                destination = null\n            }\n\n            destination = destination || {}\n\n            if (\n                       source != null && typeof source    === STR_OBJECT &&\n                    namedKeys != null && typeof namedKeys === STR_OBJECT\n                ) {\n\n\n                var typeOfNamedProperty,\n                    namedPropertyValue,\n\n                    typeOfSourceProperty,\n                    propValue\n\n\n                for(var propName in namedKeys) if (HAS_OWN.call(namedKeys, propName)) {\n\n                    namedPropertyValue = namedKeys[propName]\n                    typeOfNamedProperty = typeof namedPropertyValue\n\n                    propValue = source[propName]\n                    typeOfSourceProperty = typeof propValue\n\n\n                    if ( typeOfSourceProperty !== STR_UNDEFINED ) {\n\n                        destination[\n                            typeOfNamedProperty == 'string'?\n                                            namedPropertyValue :\n                                            propName\n                            ] = typeOfSourceProperty == 'function' ?\n                                            propValue.bind(source):\n                                            propValue\n                    }\n                }\n            }\n\n            return destination\n        }\n    }\n\n}()"
    },
    {
      "id": 144,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
      "name": "../react-menus/~/newify/index.js",
      "size": 161,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 94,
        "building": 108
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "newify",
          "loc": "4:16-33"
        },
        {
          "moduleId": 142,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/functionally/src/newify.js",
          "module": "../react-menus/~/functionally/src/newify.js",
          "moduleName": "../react-menus/~/functionally/src/newify.js",
          "type": "cjs require",
          "userRequest": "newify",
          "loc": "3:13-30"
        }
      ],
      "source": "var getInstantiatorFunction = require('./getInstantiatorFunction')\n\nmodule.exports = function(fn, args){\n\treturn getInstantiatorFunction(args.length)(fn, args)\n}"
    },
    {
      "id": 145,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/hasown/index.js",
      "name": "../react-menus/~/region/~/hasown/index.js",
      "size": 700,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 96,
        "building": 112
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "hasown",
          "loc": "3:16-33"
        },
        {
          "moduleId": 130,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/statics.js",
          "module": "../react-menus/~/region/src/statics.js",
          "moduleName": "../react-menus/~/region/src/statics.js",
          "type": "cjs require",
          "userRequest": "hasown",
          "loc": "3:15-32"
        }
      ],
      "source": "'use strict'\n\nvar hasOwn = Object.prototype.hasOwnProperty\n\nfunction curry(fn, n){\n\n    if (typeof n !== 'number'){\n        n = fn.length\n    }\n\n    function getCurryClosure(prevArgs){\n\n        function curryClosure() {\n\n            var len  = arguments.length\n            var args = [].concat(prevArgs)\n\n            if (len){\n                args.push.apply(args, arguments)\n            }\n\n            if (args.length < n){\n                return getCurryClosure(args)\n            }\n\n            return fn.apply(this, args)\n        }\n\n        return curryClosure\n    }\n\n    return getCurryClosure([])\n}\n\n\nmodule.exports = curry(function(object, property){\n    return hasOwn.call(object, property)\n})"
    },
    {
      "id": 146,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
      "name": "../react-menus/~/region/~/i-s/index.js",
      "size": 33,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
      "profile": {
        "factory": 94,
        "building": 107
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 125,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/src/index.js",
          "module": "../react-menus/~/region/src/index.js",
          "moduleName": "../react-menus/~/region/src/index.js",
          "type": "cjs require",
          "userRequest": "i-s",
          "loc": "8:16-30"
        }
      ],
      "source": "module.exports = require('./src')"
    },
    {
      "id": 147,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
      "name": "../react-menus/~/region-align/index.js",
      "size": 6793,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
      "profile": {
        "factory": 107,
        "building": 77,
        "dependencies": 5
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 126,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/lib/align/index.js",
          "module": "../react-menus/lib/align/index.js",
          "moduleName": "../react-menus/lib/align/index.js",
          "type": "cjs require",
          "userRequest": "region-align",
          "loc": "3:13-36"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\n\nrequire('./Region.static')\nrequire('./Region.proto')\n\nvar COMPUTE_ALIGN_REGION = require('./computeAlignRegion')\n\n/**\n * region-align module exposes methods for aligning {@link Element} and {@link Region} instances\n *\n * The #alignTo method aligns this to the target element/region using the specified positions. See #alignTo for a graphical example.\n *\n *\n *      var div = Element.select('div.first')\n *\n *      div.alignTo(Element.select('body') , 'br-br')\n *\n *      //aligns the div to be in the bottom-right corner of the body\n *\n * Other useful methods\n *\n *  * {@link #alignRegions} - aligns a given source region to a target region\n *  * {@link #COMPUTE_ALIGN_REGION} - given a source region and a target region, and alignment positions, returns a clone of the source region, but aligned to satisfy the given alignments\n */\n\n\n/**\n * Aligns sourceRegion to targetRegion. It modifies the sourceRegion in order to perform the correct alignment.\n * See #COMPUTE_ALIGN_REGION for details and examples.\n *\n * This method calls #COMPUTE_ALIGN_REGION passing to it all its arguments. The #COMPUTE_ALIGN_REGION method returns a region that is properly aligned.\n * If this returned region position/size differs from sourceRegion, then the sourceRegion is modified to be an exact copy of the aligned region.\n *\n * @inheritdoc #COMPUTE_ALIGN_REGION\n * @return {String} the position used for alignment\n */\nRegion.alignRegions = function(sourceRegion, targetRegion, positions, config){\n\n    var result        = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var alignedRegion = result.region\n\n    if ( !alignedRegion.equals(sourceRegion) ) {\n        sourceRegion.setRegion(alignedRegion)\n    }\n\n    return result.position\n\n}\n\n    /**\n     *\n     * The #alignTo method aligns this to the given target region, using the specified alignment position(s).\n     * You can also specify a constrain for the alignment.\n     *\n     * Example\n     *\n     *      BIG\n     *      ________________________\n     *      |  _______              |\n     *      | |       |             |\n     *      | |   A   |             |\n     *      | |       |      _____  |\n     *      | |_______|     |     | |\n     *      |               |  B  | |\n     *      |               |     | |\n     *      |_______________|_____|_|\n     *\n     * Assume the *BIG* outside rectangle is our constrain region, and you want to align the *A* rectangle\n     * to the *B* rectangle. Ideally, you'll want their tops to be aligned, and *A* to be placed at the right side of *B*\n     *\n     *\n     *      //so we would align them using\n     *\n     *      A.alignTo(B, 'tl-tr', { constrain: BIG })\n     *\n     * But this would result in\n     *\n     *       BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |                _____ _|_____\n     *      |               |     | .     |\n     *      |               |  B  | . A   |\n     *      |               |     | .     |\n     *      |_______________|_____|_._____|\n     *\n     *\n     * Which is not what we want. So we specify an array of options to try\n     *\n     *      A.alignTo(B, ['tl-tr', 'tr-tl'], { constrain: BIG })\n     *\n     * So by this we mean: try to align A(top,left) with B(top,right) and stick to the BIG constrain. If this is not possible,\n     * try the next option: align A(top,right) with B(top,left)\n     *\n     * So this is what we end up with\n     *\n     *      BIG\n     *      ________________________\n     *      |                       |\n     *      |                       |\n     *      |                       |\n     *      |        _______ _____  |\n     *      |       |       |     | |\n     *      |       |   A   |  B  | |\n     *      |       |       |     | |\n     *      |_______|_______|_____|_|\n     *\n     *\n     * Which is a lot better!\n     *\n     * @param {Element/Region} target The target to which to align this alignable.\n     *\n     * @param {String[]/String} positions The positions for the alignment.\n     *\n     * Example:\n     *\n     *      'br-tl'\n     *      ['br-tl','br-tr','cx-tc']\n     *\n     * This method will try to align using the first position. But if there is a constrain region, that position might not satisfy the constrain.\n     * If this is the case, the next positions will be tried. If one of them satifies the constrain, it will be used for aligning and it will be returned from this method.\n     *\n     * If no position matches the contrain, the one with the largest intersection of the source region with the constrain will be used, and this alignable will be resized to fit the constrain region.\n     *\n     * @param {Object} config A config object with other configuration for this method\n     *\n     * @param {Array[]/Object[]/Object} config.offset The offset to use for aligning. If more that one offset is specified, then offset at a given index is used with the position at the same index.\n     *\n     * An offset can have the following form:\n     *\n     *      [left_offset, top_offset]\n     *      {left: left_offset, top: top_offset}\n     *      {x: left_offset, y: top_offset}\n     *\n     * You can pass one offset or an array of offsets. In case you pass just one offset,\n     * it cannot have the array form, so you cannot call\n     *\n     *      this.alignTo(target, positions, [10, 20])\n     *\n     * If you do, it will not be considered. Instead, please use\n     *\n     *      this.alignTo(target, positions, {x: 10, y: 20})\n     *\n     * Or\n     *\n     *      this.alignTo(target, positions, [[10, 20]] )\n     *\n     * @param {Boolean/Element/Region} config.constrain If boolean, target will be constrained to the document region, otherwise,\n     * getRegion will be called on this argument to determine the region we need to constrain to.\n     *\n     * @param {Boolean/Object} config.sync Either boolean or an object with {width, height}. If it is boolean,\n     * both width and height will be synced. If directions are specified, will only sync the direction which is specified as true\n     *\n     * @return {String}\n     *\n     */\nRegion.prototype.alignTo = function(target, positions, config){\n\n    config = config || {}\n\n    var sourceRegion = this\n    var targetRegion = Region.from(target)\n\n    var result = COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config)\n    var resultRegion = result.region\n\n    if (!resultRegion.equalsSize(sourceRegion)){\n        this.setSize(resultRegion.getSize())\n    }\n    if (!resultRegion.equalsPosition(sourceRegion)){\n        this.setPosition(resultRegion.getPosition(), { absolute: !!config.absolute })\n    }\n\n    return result.position\n}\n\nmodule.exports = Region"
    },
    {
      "id": 148,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copy.js",
      "name": "../react-menus/~/region/~/copy-utils/copy.js",
      "size": 677,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 53,
        "building": 20
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copy",
          "loc": "22:14-31"
        }
      ],
      "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\n\n/**\n * Copies all properties from source to destination\n *\n *      copy({name: 'jon',age:5}, this);\n *      // => this will have the 'name' and 'age' properties set to 'jon' and 5 respectively\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT ){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) ) {\n            destination[i] = source[i]\n        }\n\n    }\n\n    return destination\n}"
    },
    {
      "id": 149,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyIf.js",
      "name": "../react-menus/~/region/~/copy-utils/copyIf.js",
      "size": 754,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 53,
        "building": 22
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyIf",
          "loc": "35:16-35"
        }
      ],
      "source": "'use strict'\n\nvar HAS_OWN       = Object.prototype.hasOwnProperty\nvar STR_OBJECT    = 'object'\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties from source to destination, if the property does not exist into the destination\n *\n *      copyIf({name: 'jon',age:5}, {age:7})\n *      // => { name: 'jon', age: 7}\n *\n * @param {Object} source\n * @param {Object} destination\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination){\n    destination = destination || {}\n\n    if (source != null && typeof source === STR_OBJECT){\n\n        for (var i in source) if ( HAS_OWN.call(source, i) && (typeof destination[i] === STR_UNDEFINED) ) {\n\n            destination[i] = source[i]\n\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 150,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyList.js",
      "name": "../react-menus/~/region/~/copy-utils/copyList.js",
      "size": 900,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 54,
        "building": 29
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyList",
          "loc": "77:18-39"
        },
        {
          "moduleId": 152,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeys.js",
          "module": "../react-menus/~/region/~/copy-utils/copyKeys.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/copyKeys.js",
          "type": "cjs require",
          "userRequest": "./copyList",
          "loc": "7:15-36"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination\n *\n *      copyList({name: 'jon',age:5, year: 2006}, {}, ['name','age'])\n *      // => {name: 'jon', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len; i++ ){\n        propName = list[i]\n\n        if ( typeof source[propName] !== STR_UNDEFINED ) {\n            destination[list[i]] = source[list[i]]\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 151,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyListIf.js",
      "name": "../react-menus/~/region/~/copy-utils/copyListIf.js",
      "size": 1067,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 53,
        "building": 23
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyListIf",
          "loc": "91:20-43"
        },
        {
          "moduleId": 153,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeysIf.js",
          "module": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
          "type": "cjs require",
          "userRequest": "./copyListIf",
          "loc": "7:17-40"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\n\n/**\n * Copies all properties named in the list, from source to destination, if the property does not exist into the destination\n *\n *      copyListIf({name: 'jon',age:5, year: 2006}, {age: 10}, ['name','age'])\n *      // => {name: 'jon', age: 10}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Array} list the array with the names of the properties to copy\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, list){\n    if (arguments.length < 3){\n        list = destination\n        destination = null\n    }\n\n    destination = destination || {}\n    list        = list || Object.keys(source)\n\n    var i   = 0\n    var len = list.length\n    var propName\n\n    for ( ; i < len ; i++ ){\n        propName = list[i]\n        if (\n                (typeof source[propName]      !== STR_UNDEFINED) &&\n                (typeof destination[propName] === STR_UNDEFINED)\n            ){\n            destination[propName] = source[propName]\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 152,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeys.js",
      "name": "../react-menus/~/region/~/copy-utils/copyKeys.js",
      "size": 1534,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 54,
        "building": 33,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyKeys",
          "loc": "105:18-39"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyList = require('./copyList')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination\n *\n *      copyKeys({name: 'jon',age:5, year: 2006, date: '2010/05/12'}, {}, {name:1 ,age: true, year: 'theYear'})\n *      // => {name: 'jon', age: 5, theYear: 2006}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyList(source, destination, namedKeys)\n    }\n\n    if (\n           source != null && typeof source    === STR_OBJECT &&\n        namedKeys != null && typeof namedKeys === STR_OBJECT\n    ) {\n        var typeOfNamedProperty\n        var namedPropertyValue\n\n        for  (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n            namedPropertyValue  = namedKeys[propName]\n            typeOfNamedProperty = typeof namedPropertyValue\n\n            if (typeof source[propName] !== STR_UNDEFINED){\n                destination[typeOfNamedProperty == 'string'? namedPropertyValue : propName] = source[propName]\n            }\n        }\n    }\n\n    return destination\n}"
    },
    {
      "id": 153,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/copyKeysIf.js",
      "name": "../react-menus/~/region/~/copy-utils/copyKeysIf.js",
      "size": 1869,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
      "profile": {
        "factory": 54,
        "building": 25,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 143,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/copy-utils/index.js",
          "module": "../react-menus/~/region/~/copy-utils/index.js",
          "moduleName": "../react-menus/~/region/~/copy-utils/index.js",
          "type": "cjs require",
          "userRequest": "./copyKeysIf",
          "loc": "120:20-43"
        }
      ],
      "source": "'use strict'\n\nvar STR_UNDEFINED = 'undefined'\nvar STR_OBJECT    = 'object'\nvar HAS_OWN       = Object.prototype.hasOwnProperty\n\nvar copyListIf = require('./copyListIf')\n\n/**\n * Copies all properties named in the namedKeys, from source to destination,\n * but only if the property does not already exist in the destination object\n *\n *      copyKeysIf({name: 'jon',age:5, year: 2006}, {aname: 'test'}, {name:'aname' ,age: true})\n *      // => {aname: 'test', age: 5}\n *\n * @param {Object} source\n * @param {Object} destination\n * @param {Object} namedKeys an object with keys denoting the properties to be copied\n *\n * @return {Object} destination\n */\nmodule.exports = function(source, destination, namedKeys){\n    if (arguments.length < 3 ){\n        namedKeys = destination\n        destination = null\n    }\n\n    destination = destination || {}\n\n    if (!namedKeys || Array.isArray(namedKeys)){\n        return copyListIf(source, destination, namedKeys)\n    }\n\n    if (\n               source != null && typeof source    === STR_OBJECT &&\n            namedKeys != null && typeof namedKeys === STR_OBJECT\n        ) {\n\n            var typeOfNamedProperty\n            var namedPropertyValue\n            var newPropertyName\n\n            for (var propName in namedKeys) if ( HAS_OWN.call(namedKeys, propName) ) {\n\n                namedPropertyValue  = namedKeys[propName]\n                typeOfNamedProperty = typeof namedPropertyValue\n                newPropertyName     = typeOfNamedProperty == 'string'? namedPropertyValue : propName\n\n                if (\n                        typeof      source[propName]        !== STR_UNDEFINED &&\n                        typeof destination[newPropertyName] === STR_UNDEFINED\n                    ) {\n                    destination[newPropertyName] = source[propName]\n                }\n\n            }\n        }\n\n    return destination\n}"
    },
    {
      "id": 154,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/getInstantiatorFunction.js",
      "name": "../react-menus/~/newify/getInstantiatorFunction.js",
      "size": 512,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
      "profile": {
        "factory": 52,
        "building": 29
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 144,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/newify/index.js",
          "module": "../react-menus/~/newify/index.js",
          "moduleName": "../react-menus/~/newify/index.js",
          "type": "cjs require",
          "userRequest": "./getInstantiatorFunction",
          "loc": "1:30-66"
        }
      ],
      "source": "module.exports = function(){\n\n    'use strict';\n\n    var fns = {}\n\n    return function(len){\n\n        if ( ! fns [len ] ) {\n\n            var args = []\n            var i    = 0\n\n            for (; i < len; i++ ) {\n                args.push( 'a[' + i + ']')\n            }\n\n            fns[len] = new Function(\n                            'c',\n                            'a',\n                            'return new c(' + args.join(',') + ')'\n                        )\n        }\n\n        return fns[len]\n    }\n\n}()"
    },
    {
      "id": 155,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "name": "../react-menus/~/region/~/i-s/src/index.js",
      "size": 489,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
      "profile": {
        "factory": 61,
        "building": 26
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 146,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/index.js",
          "module": "../react-menus/~/region/~/i-s/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/index.js",
          "type": "cjs require",
          "userRequest": "./src",
          "loc": "1:17-33"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = {\n    'numeric'  : require('./numeric'),\n    'number'   : require('./number'),\n    'int'      : require('./int'),\n    'float'    : require('./float'),\n    'string'   : require('./string'),\n    'function' : require('./function'),\n    'object'   : require('./object'),\n    'arguments': require('./arguments'),\n    'boolean'  : require('./boolean'),\n    'date'     : require('./date'),\n    'regexp'   : require('./regexp'),\n    'array'    : require('./array')\n}"
    },
    {
      "id": 156,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.static.js",
      "name": "../react-menus/~/region-align/Region.static.js",
      "size": 2874,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
      "profile": {
        "factory": 4,
        "building": 36,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 147,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "module": "../react-menus/~/region-align/index.js",
          "moduleName": "../react-menus/~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./Region.static",
          "loc": "5:0-26"
        }
      ],
      "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n * @static\n * Aligns the source region to the target region, so as to correspond to the given alignment.\n *\n * NOTE that this method makes changes on the sourceRegion in order for it to be aligned as specified.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n *\n * @param {String} align A string with 2 valid align positions, eg: 'tr-bl'.\n * For valid positions, see {@link Region#getPoint}\n *\n * Having 2 regions, we need to be able to align them as we wish:\n *\n * for example, if we have\n *\n *       source    target\n *       ________________\n *       ____\n *      |    |     ________\n *      |____|    |        |\n *                |        |\n *                |________|\n *\n * and we align 't-t', we get:\n *\n *       source    target\n *       _________________\n *\n *       ____      ________\n *      |    |    |        |\n *      |____|    |        |\n *                |________|\n *\n *  In this case, the source was moved down to be aligned to the top of the target\n *\n *\n * and if we align 'tc-tc' we get\n *\n *       source     target\n *       __________________\n *\n *                 ________\n *                | |    | |\n *                | |____| |\n *                |________|\n *\n *  Since the source was moved to have the top-center point to be the same with target top-center\n *\n *\n *\n * @return {RegionClass} The Region class\n */\nRegion.align = function(sourceRegion, targetRegion, align){\n\n    targetRegion = Region.from(targetRegion)\n\n    align = (align || 'c-c').split('-')\n\n    //<debug>\n    if (align.length != 2){\n        console.warn('Incorrect region alignment! The align parameter need to be in the form \\'br-c\\', that is, a - separated string!', align)\n    }\n    //</debug>\n\n    return Region.alignToPoint(sourceRegion, targetRegion.getPoint(align[1]), align[0])\n}\n\n/**\n * Modifies the given region to be aligned to the point, as specified by anchor\n *\n * @param {Region} region The region to align to the point\n * @param {Object} point The point to be used as a reference\n * @param {Number} point.x\n * @param {Number} point.y\n * @param {String} anchor The position where to anchor the region to the point. See {@link #getPoint} for available options/\n *\n * @return {Region} the given region\n */\nRegion.alignToPoint = function(region, point, anchor){\n\n    region = Region.from(region)\n\n    var sourcePoint = region.getPoint(anchor)\n    var count       = 0\n    var shiftObj    = {}\n\n    if (\n            sourcePoint.x != null &&\n            point.x != null\n        ){\n\n            count++\n            shiftObj.left = point.x - sourcePoint.x\n    }\n\n    if (\n            sourcePoint.y != null &&\n            point.y != null\n        ){\n            count++\n            shiftObj.top = point.y - sourcePoint.y\n    }\n\n    if (count){\n\n        region.shift(shiftObj)\n\n    }\n\n    return region\n}"
    },
    {
      "id": 157,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/Region.proto.js",
      "name": "../react-menus/~/region-align/Region.proto.js",
      "size": 789,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
      "profile": {
        "factory": 4,
        "building": 38,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 147,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "module": "../react-menus/~/region-align/index.js",
          "moduleName": "../react-menus/~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./Region.proto",
          "loc": "6:0-25"
        }
      ],
      "source": "'use strict';\n\nvar Region = require('region')\n\n/**\n *\n * Aligns this region to the given region\n * @param {Region} region\n * @param {String} alignPositions For available positions, see {@link #getPoint}\n *\n *     eg: 'tr-bl'\n *\n * @return this\n */\nRegion.prototype.alignToRegion = function(region, alignPositions){\n    Region.align(this, region, alignPositions)\n\n    return this\n}\n\n/**\n * Aligns this region to the given point, in the anchor position\n * @param {Object} point eg: {x: 20, y: 600}\n * @param {Number} point.x\n * @param {Number} point.y\n *\n * @param {String} anchor For available positions, see {@link #getPoint}\n *\n *     eg: 'bl'\n *\n * @return this\n */\n Region.prototype.alignToPoint = function(point, anchor){\n    Region.alignToPoint(this, point, anchor)\n\n    return this\n}"
    },
    {
      "id": 158,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
      "name": "../react-menus/~/region-align/computeAlignRegion.js",
      "size": 3447,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
      "profile": {
        "factory": 5,
        "building": 40,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 147,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/index.js",
          "module": "../react-menus/~/region-align/index.js",
          "moduleName": "../react-menus/~/region-align/index.js",
          "type": "cjs require",
          "userRequest": "./computeAlignRegion",
          "loc": "8:27-58"
        }
      ],
      "source": "'use strict'\n\nvar ALIGN_TO_NORMALIZED = require('./alignToNormalized')\n\nvar Region = require('region')\n\n/**\n * @localdoc Given source and target regions, and the given alignments required, returns a region that is the resulting allignment.\n * Does not modify the sourceRegion.\n *\n * Example\n *\n *      var sourceRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *\n *      var targetRegion = zippy.getInstance({\n *          alias  : 'z.region',\n *          top    : 10,\n *          left   : 10,\n *          bottom : 40,\n *          right  : 100\n *      })\n *      //has top-left at (10,10)\n *      //and bottom-right at (40, 100)\n *\n *      var alignRegion = alignable.COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, 'tl-br')\n *\n *      //alignRegion will be a clone of sourceRegion, but will have the\n *      //top-left corner aligned with bottom-right of targetRegion\n *\n *      alignRegion.get() // => { top: 40, left: 100, bottom: 70, right: 190 }\n *\n * @param  {Region} sourceRegion The source region to align to targetRegion\n * @param  {Region} targetRegion The target region to which to align the sourceRegion\n * @param  {String/String[]} positions    A string ( delimited by \"-\" characters ) or an array of strings with the position to try, in the order of their priority.\n * See Region#getPoint for a list of available positions. They can be combined in any way.\n * @param  {Object} config      A config object with other configuration for the alignment\n * @param  {Object/Object[]} config.offset      Optional offsets. Either an object or an array with a different offset for each position\n * @param  {Element/Region/Boolean} config.constrain  The constrain to region or element. If the boolean true, Region.getDocRegion() will be used\n * @param  {Object/Boolean} config.sync   A boolean object that indicates whether to sync sourceRegion and targetRegion sizes (width/height or both). Can be\n *\n *  * true - in order to sync both width and height\n *  * { width: true }  - to only sync width\n *  * { height: true } - to only sync height\n *  * { size: true }   - to sync both width and height\n *\n * @return {Object} an object with the following keys:\n *\n *  * position - the position where the alignment was made. One of the given positions\n *  * region   - the region where the alignment is in place\n *  * positionChanged - boolean value indicating if the position of the returned region is different from the position of sourceRegion\n *  * widthChanged    - boolean value indicating if the width of the returned region is different from the width of sourceRegion\n *  * heightChanged   - boolean value indicating if the height of the returned region is different from the height of sourceRegion\n */\nfunction COMPUTE_ALIGN_REGION(sourceRegion, targetRegion, positions, config){\n    sourceRegion = Region.from(sourceRegion)\n\n    var sourceClone = sourceRegion.clone()\n    var position    = ALIGN_TO_NORMALIZED(sourceClone, targetRegion, positions, config)\n\n    return {\n        position        : position,\n        region          : sourceClone,\n        widthChanged    : sourceClone.getWidth() != sourceRegion.getWidth(),\n        heightChanged   : sourceClone.getHeight() != sourceRegion.getHeight(),\n        positionChanged : sourceClone.equalsPosition(sourceRegion)\n    }\n}\n\n\nmodule.exports = COMPUTE_ALIGN_REGION"
    },
    {
      "id": 159,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/numeric.js",
      "name": "../react-menus/~/region/~/i-s/src/numeric.js",
      "size": 111,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 40,
        "building": 9
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./numeric",
          "loc": "4:17-37"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return !isNaN( parseFloat( value ) ) && isFinite( value )\n}"
    },
    {
      "id": 160,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/number.js",
      "name": "../react-menus/~/region/~/i-s/src/number.js",
      "size": 105,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 40,
        "building": 9
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "5:17-36"
        },
        {
          "moduleId": 161,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/int.js",
          "module": "../react-menus/~/region/~/i-s/src/int.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/int.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "3:13-32"
        },
        {
          "moduleId": 162,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/float.js",
          "module": "../react-menus/~/region/~/i-s/src/float.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/float.js",
          "type": "cjs require",
          "userRequest": "./number",
          "loc": "3:13-32"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value === 'number' && isFinite(value)\n}"
    },
    {
      "id": 161,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/int.js",
      "name": "../react-menus/~/region/~/i-s/src/int.js",
      "size": 143,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 40,
        "building": 10,
        "dependencies": 1
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./int",
          "loc": "6:17-33"
        }
      ],
      "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseInt(value, 10))\n}"
    },
    {
      "id": 162,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/float.js",
      "name": "../react-menus/~/region/~/i-s/src/float.js",
      "size": 181,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 40,
        "building": 12,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./float",
          "loc": "7:17-35"
        }
      ],
      "source": "'use strict'\n\nvar number = require('./number')\n\nmodule.exports = function(value){\n    return number(value) && (value === parseFloat(value, 10)) && !(value === parseInt(value, 10))\n}"
    },
    {
      "id": 163,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/string.js",
      "name": "../react-menus/~/region/~/i-s/src/string.js",
      "size": 85,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 41,
        "building": 12
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./string",
          "loc": "8:17-36"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'string'\n}"
    },
    {
      "id": 164,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/function.js",
      "name": "../react-menus/~/region/~/i-s/src/function.js",
      "size": 160,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 41,
        "building": 13
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./function",
          "loc": "9:17-38"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Function]'\n}"
    },
    {
      "id": 165,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/object.js",
      "name": "../react-menus/~/region/~/i-s/src/object.js",
      "size": 158,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 41,
        "building": 14
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./object",
          "loc": "10:17-36"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Object]'\n}"
    },
    {
      "id": 166,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/arguments.js",
      "name": "../react-menus/~/region/~/i-s/src/arguments.js",
      "size": 179,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 42,
        "building": 14
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./arguments",
          "loc": "11:17-39"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Arguments]' || !!value.callee\n}"
    },
    {
      "id": 167,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/boolean.js",
      "name": "../react-menus/~/region/~/i-s/src/boolean.js",
      "size": 86,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 42,
        "building": 14
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./boolean",
          "loc": "12:17-37"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return typeof value == 'boolean'\n}"
    },
    {
      "id": 168,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/date.js",
      "name": "../react-menus/~/region/~/i-s/src/date.js",
      "size": 156,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 42,
        "building": 15
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./date",
          "loc": "13:17-34"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object Date]'\n}"
    },
    {
      "id": 169,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/regexp.js",
      "name": "../react-menus/~/region/~/i-s/src/regexp.js",
      "size": 158,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 43,
        "building": 15
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./regexp",
          "loc": "14:17-36"
        }
      ],
      "source": "'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(value){\n    return objectToString.apply(value) === '[object RegExp]'\n}"
    },
    {
      "id": 170,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/array.js",
      "name": "../react-menus/~/region/~/i-s/src/array.js",
      "size": 81,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
      "profile": {
        "factory": 42,
        "building": 17
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 155,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region/node_modules/i-s/src/index.js",
          "module": "../react-menus/~/region/~/i-s/src/index.js",
          "moduleName": "../react-menus/~/region/~/i-s/src/index.js",
          "type": "cjs require",
          "userRequest": "./array",
          "loc": "15:17-35"
        }
      ],
      "source": "'use strict'\n\nmodule.exports = function(value){\n    return Array.isArray(value)\n}"
    },
    {
      "id": 171,
      "identifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/alignToNormalized.js",
      "name": "../react-menus/~/region-align/alignToNormalized.js",
      "size": 5225,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
      "profile": {
        "factory": 29,
        "building": 32,
        "dependencies": 0
      },
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 158,
          "moduleIdentifier": "/home/radu/code/react-menus/node_modules/jsx-loader/index.js?harmony!/home/radu/code/react-menus/node_modules/region-align/computeAlignRegion.js",
          "module": "../react-menus/~/region-align/computeAlignRegion.js",
          "moduleName": "../react-menus/~/region-align/computeAlignRegion.js",
          "type": "cjs require",
          "userRequest": "./alignToNormalized",
          "loc": "3:26-56"
        }
      ],
      "source": "'use strict'\n\nvar Region = require('region')\n\n/**\n *\n * This method is trying to align the sourceRegion to the targetRegion, given the alignment positions\n * and the offsets. It only modifies the sourceRegion\n *\n * This is all well and easy, but if there is a constrainTo region, the algorithm has to take it into account.\n * In this case, it works as follows.\n *\n *  * start with the first alignment position. Aligns the region, adds the offset and then check for the constraint.\n *  * if the constraint condition is ok, return the position.\n *  * otherwise, remember the intersection area, if the regions are intersecting.\n *  * then go to the next specified align position, and so on, computing the maximum intersection area.\n *\n * If no alignment fits the constrainRegion, the sourceRegion will be resized to match it,\n * using the position with the maximum intersection area.\n *\n * Since we have computed the index of the position with the max intersection area, take that position,\n * and align the sourceRegion accordingly. Then resize the sourceRegion to the intersection, and reposition\n * it again, since resizing it might have destroyed the alignment.\n *\n * Return the position.\n *\n * @param {Region} sourceRegion\n * @param {Region} targetRegion\n * @param {String[]} positions\n * @param {Object} config\n * @param {Array} config.offset\n * @param {Region} config.constrain\n * @param {Boolean/Object} config.sync\n *\n * @return {String/Undefined} the chosen position for the alignment, or undefined if no position found\n */\nfunction ALIGN_TO_NORMALIZED(sourceRegion, targetRegion, positions, config){\n\n    targetRegion = Region.from(targetRegion)\n\n    config = config  || {}\n\n    var constrainTo = config.constrain,\n        syncOption  = config.sync,\n        offsets     = config.offset || [],\n        syncWidth   = false,\n        syncHeight  = false,\n        sourceClone = sourceRegion.clone()\n\n    /*\n     * Prepare the method arguments: positions, offsets, constrain and sync options\n     */\n    if (!Array.isArray(positions)){\n        positions = positions? [positions]: []\n    }\n\n    if (!Array.isArray(offsets)){\n        offsets = offsets? [offsets]: []\n    }\n\n    if (constrainTo){\n        constrainTo = constrainTo === true?\n                                Region.getDocRegion():\n                                constrainTo.getRegion()\n    }\n\n    if (syncOption){\n\n        if (syncOption.size){\n            syncWidth  = true\n            syncHeight = true\n        } else {\n            syncWidth  = syncOption === true?\n                            true:\n                            syncOption.width || false\n\n            syncHeight = syncOption === true?\n                            true:\n                            syncOption.height || false\n        }\n    }\n\n    if (syncWidth){\n        sourceClone.setWidth(targetRegion.getWidth())\n    }\n    if (syncHeight){\n        sourceClone.setHeight(targetRegion.getHeight())\n\n    }\n\n    var offset,\n        i = 0,\n        len = positions.length,\n        pos,\n        intersection,\n        itArea,\n        maxArea = -1,\n        maxAreaIndex = -1\n\n    for (; i < len; i++){\n        pos     = positions[i]\n        offset  = offsets[i]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            if (!Array.isArray(offset)){\n                offset = offsets[i] = [offset.x || offset.left, offset.y || offset.top]\n            }\n\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //the source region is already aligned in the correct position\n\n        if (constrainTo){\n            //if we have a constrain region, test for the constrain\n            intersection = sourceClone.getIntersection(constrainTo)\n\n            if ( intersection && intersection.equals(sourceClone) ) {\n                //constrain respected, so return (the aligned position)\n\n                sourceRegion.set(sourceClone)\n                return pos\n            } else {\n\n                //the constrain was not respected, so continue trying\n                if (intersection && ((itArea = intersection.getArea()) > maxArea)){\n                    maxArea      = itArea\n                    maxAreaIndex = i\n                }\n            }\n\n        } else {\n            sourceRegion.set(sourceClone)\n            return pos\n        }\n    }\n\n    //no alignment respected the constraints\n    if (~maxAreaIndex){\n        pos     = positions[maxAreaIndex]\n        offset  = offsets[maxAreaIndex]\n\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        //we are sure an intersection exists, because of the way the maxAreaIndex was computed\n        intersection = sourceClone.getIntersection(constrainTo)\n\n        sourceClone.setRegion(intersection)\n        sourceClone.alignToRegion(targetRegion, pos)\n\n        if (offset){\n            sourceClone.shift({\n                left: offset[0],\n                top : offset[1]\n            })\n        }\n\n        sourceRegion.set(sourceClone)\n\n        return pos\n    }\n\n}\n\nmodule.exports = ALIGN_TO_NORMALIZED"
    }
  ],
  "filteredModules": 0,
  "children": []
}
