diff --git a/.babelrc b/.babelrc old mode 100644 new mode 100755 diff --git a/.eslintrc b/.eslintrc old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.npmignore b/.npmignore old mode 100644 new mode 100755 diff --git a/.prettierrc b/.prettierrc old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/dist/index.es.js b/dist/index.es.js old mode 100644 new mode 100755 index 1a9498c3..485a6e6a --- a/dist/index.es.js +++ b/dist/index.es.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { PureComponent, Component } from 'react'; import PropTypes from 'prop-types'; // Key map for changing the position and size of draggable boxes @@ -62,8 +62,8 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func var Box = /*#__PURE__*/ -function (_Component) { - _inherits(Box, _Component); +function (_PureComponent) { + _inherits(Box, _PureComponent); function Box(props) { var _this; @@ -436,7 +436,7 @@ function (_Component) { }]); return Box; -}(Component); +}(PureComponent); Box.propTypes = { defaultPosition: PropTypes.object.isRequired, @@ -875,18 +875,18 @@ AlignmentGuides.propTypes = { boxStyle: PropTypes.object, className: PropTypes.string, drag: PropTypes.bool, - resize: PropTypes.bool, - rotate: PropTypes.bool, keybindings: PropTypes.bool, - onRotateStart: PropTypes.func, - onRotate: PropTypes.func, - onRotateEnd: PropTypes.func, - onResizeStart: PropTypes.func, - onResize: PropTypes.func, - onResizeEnd: PropTypes.func, onDragStart: PropTypes.func, onDrag: PropTypes.func, onDragEnd: PropTypes.func, + onResizeStart: PropTypes.func, + onResize: PropTypes.func, + onResizeEnd: PropTypes.func, + onRotateStart: PropTypes.func, + onRotate: PropTypes.func, + onRotateEnd: PropTypes.func, + resize: PropTypes.bool, + rotate: PropTypes.bool, style: PropTypes.object }; diff --git a/dist/index.es.js.map b/dist/index.es.js.map old mode 100644 new mode 100755 index e46352c2..27f1f525 --- a/dist/index.es.js.map +++ b/dist/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../src/utils/constants.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Box.js","../src/utils/helpers.js","../src/AlignmentGuides.js","../src/index.js"],"sourcesContent":["// Key map for changing the position and size of draggable boxes\n// Key map follows the Mousetrap syntax: https://craig.is/killing/mice\nexport const KEY_MAP = {\n\tMOVE_LEFT_1_PX: 'left',\n\tMOVE_RIGHT_1_PX: 'right',\n\tMOVE_UP_1_PX: 'up',\n\tMOVE_DOWN_1_PX: 'down',\n\tMOVE_LEFT_10_PX: 'shift+left',\n\tMOVE_RIGHT_10_PX: 'shift+right',\n\tMOVE_UP_10_PX: 'shift+up',\n\tMOVE_DOWN_10_PX: 'shift+down'\n};\n\n// Positions for resize handles\nexport const RESIZE_HANDLES = ['tr', 'tl', 'br', 'bl'];\n\n// Positions for rotate handles\nexport const ROTATE_HANDLES = ['tr', 'tl', 'br', 'bl'];\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { RESIZE_HANDLES } from './utils/constants';\nimport styles from './styles.scss';\n\nclass Box extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\twidth: props.position ? props.position.width : props.defaultPosition.width,\n\t\t\theight: props.position ? props.position.height : props.defaultPosition.height,\n\t\t\ttop: props.position ? props.position.top : props.defaultPosition.top,\n\t\t\tleft: props.position ? props.position.left : props.defaultPosition.left\n\t\t};\n\n\t\tthis.dragging = false;\n\t\tthis.resizing = false;\n\n\t\tthis.box = React.createRef();\n\t\tthis.onDragStart = this.onDragStart.bind(this);\n\t\tthis.shortcutHandler = this.shortcutHandler.bind(this);\n\t\tthis.onResizeStart = this.onResizeStart.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { defaultPosition } = this.props;\n\t\tthis.setState({\n\t\t\twidth: defaultPosition.width,\n\t\t\theight: defaultPosition.height,\n\t\t\ttop: defaultPosition.top,\n\t\t\tleft: defaultPosition.left\n\t\t});\n\t}\n\n\tcomponentWillUpdate(nextProps, nextState, nextContext) {\n\t\tif (this.props.position !== nextProps.position) {\n\t\t\tthis.setState({\n\t\t\t\twidth: nextProps.position.width,\n\t\t\t\theight: nextProps.position.height,\n\t\t\t\ttop: nextProps.position.top,\n\t\t\t\tleft: nextProps.position.left\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragStart(e) {\n\t\tconst target = this.box.current;\n\t\tconst boundingBox = this.props.getBoundingBoxElement();\n\t\tconst startingPosition = target.getBoundingClientRect().toJSON();\n\t\tconst boundingBoxPosition = boundingBox.current.getBoundingClientRect().toJSON();\n\t\tconst data = {\n\t\t\tx: startingPosition.x - boundingBoxPosition.x,\n\t\t\ty: startingPosition.y - boundingBoxPosition.y,\n\t\t\twidth: startingPosition.width,\n\t\t\theight: startingPosition.height,\n\t\t\tnode: target\n\t\t};\n\t\tthis.props.onDragStart && this.props.onDragStart(e, data);\n\t\tthis.dragging = true;\n\n\t\tconst deltaX = Math.abs(target.offsetLeft - e.clientX);\n\t\tconst deltaY = Math.abs(target.offsetTop - e.clientY);\n\n\t\tconst onDrag = (e) => {\n\t\t\tif (this.dragging) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tconst currentPosition = {\n\t\t\t\t\tleft: e.clientX - deltaX,\n\t\t\t\t\ttop: e.clientY - deltaY\n\t\t\t\t};\n\t\t\t\tconst data = {\n\t\t\t\t\tx: currentPosition.left,\n\t\t\t\t\ty: currentPosition.top,\n\t\t\t\t\twidth: target.offsetWidth,\n\t\t\t\t\theight: target.offsetHeight,\n\t\t\t\t\tnode: target\n\t\t\t\t};\n\t\t\t\tthis.setState({\n\t\t\t\t\tleft: currentPosition.left,\n\t\t\t\t\ttop: currentPosition.top\n\t\t\t\t}, () => {\n\t\t\t\t\tthis.props.onDrag && this.props.onDrag(e, data);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst onDragEnd = (e) => {\n\t\t\tif (this.dragging) {\n\t\t\t\tconst endPosition = {\n\t\t\t\t\tleft: e.clientX - deltaX,\n\t\t\t\t\ttop: e.clientY - deltaY\n\t\t\t\t};\n\t\t\t\tconst data = {\n\t\t\t\t\tx: endPosition.left,\n\t\t\t\t\ty: endPosition.top,\n\t\t\t\t\twidth: target.offsetWidth,\n\t\t\t\t\theight: target.offsetHeight,\n\t\t\t\t\tnode: target\n\t\t\t\t};\n\t\t\t\tthis.props.onDragEnd && this.props.onDragEnd(e, data);\n\t\t\t\tdocument.removeEventListener('mousemove', onDrag);\n\t\t\t\tdocument.removeEventListener('mouseup', onDragEnd);\n\t\t\t\tthis.dragging = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousemove', onDrag);\n\t\tdocument.addEventListener('mouseup', onDragEnd);\n\t}\n\n\tshortcutHandler(e) {\n\t\tif (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left + 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left + 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left - 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left - 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top - 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top - 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top + 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width + 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width - 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width - 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height + 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height - 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height - 10\n\t\t\t});\n\t\t}\n\t}\n\n\tonResizeStart(e) {\n\t\tconst { target } = e;\n\t\tconst boundingBox = this.props.getBoundingBoxElement();\n\t\tconst startingDimensions = this.box.current.getBoundingClientRect().toJSON();\n\t\tconst boundingBoxPosition = boundingBox.current.getBoundingClientRect().toJSON();\n\t\tconst data = {\n\t\t\twidth: startingDimensions.width,\n\t\t\theight: startingDimensions.height,\n\t\t\tx: startingDimensions.left - boundingBoxPosition.x,\n\t\t\ty: startingDimensions.top - boundingBoxPosition.y,\n\t\t\tnode: this.box.current\n\t\t};\n\t\tthis.props.onResizeStart && this.props.onResizeStart(e, data);\n\t\tthis.resizing = true;\n\n\t\tconst onResize = (e) => {\n\t\t\tif (this.resizing) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tif (target.id === 'br') {\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: e.clientX - startingDimensions.left,\n\t\t\t\t\t\theight: e.clientY - startingDimensions.top\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: startingDimensions.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: startingDimensions.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'bl') {\n\t\t\t\t\tconst deltaX = startingDimensions.left - e.clientX;\n\t\t\t\t\tconst deltaY = startingDimensions.top + startingDimensions.height - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: startingDimensions.width + deltaX,\n\t\t\t\t\t\theight: startingDimensions.height - deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top,\n\t\t\t\t\t\tleft: startingDimensions.left - deltaX\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'tr') {\n\t\t\t\t\tconst deltaX = e.clientX - startingDimensions.left;\n\t\t\t\t\tconst deltaY = startingDimensions.top - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: deltaX,\n\t\t\t\t\t\theight: startingDimensions.height + deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top - deltaY,\n\t\t\t\t\t\tleft: startingDimensions.left\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'tl') {\n\t\t\t\t\tconst deltaX = startingDimensions.left - e.clientX;\n\t\t\t\t\tconst deltaY = startingDimensions.top - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: startingDimensions.width + deltaX,\n\t\t\t\t\t\theight: startingDimensions.height + deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top - deltaY,\n\t\t\t\t\t\tleft: startingDimensions.left - deltaX\n\t\t\t\t\t};\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst onResizeEnd = (e) => {\n\t\t\tif (this.resizing) {\n\t\t\t\tdocument.removeEventListener('mousemove', onResize);\n\t\t\t\tdocument.removeEventListener('mouseup', onResizeEnd);\n\n\t\t\t\tconst dimensions = this.box.current.getBoundingClientRect().toJSON();\n\t\t\t\tconst data = {\n\t\t\t\t\twidth: dimensions.width,\n\t\t\t\t\theight: dimensions.height,\n\t\t\t\t\ty: dimensions.top - boundingBoxPosition.y,\n\t\t\t\t\tx: dimensions.left - boundingBoxPosition.x,\n\t\t\t\t\tnode: this.box.current\n\t\t\t\t};\n\t\t\t\tthis.props.onResizeEnd && this.props.onResizeEnd(e, data);\n\t\t\t\tthis.resizing = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousemove', onResize);\n\t\tdocument.addEventListener('mouseup', onResizeEnd);\n\t}\n\n\trender() {\n\t\tconst { boxStyle, id, isSelected } = this.props;\n\t\tconst boxClassNames = isSelected ? `${styles.box} ${styles.selected}` : styles.box;\n\t\tconst boxStyles = {\n\t\t\t...boxStyle,\n\t\t\twidth: `${this.state.width}px`,\n\t\t\theight: `${this.state.height}px`,\n\t\t\ttop: `${this.state.top}px`,\n\t\t\tleft: `${this.state.left}px`\n\t\t};\n\n\t\treturn \n\t\t\t{\n\t\t\t\tisSelected ?\n\t\t\t\t\tRESIZE_HANDLES.map(handle => {\n\t\t\t\t\t\tconst className = `${styles.resizeHandle} ${styles[`resize-${handle}`]}`;\n\t\t\t\t\t\treturn
\n\t\t\t\t\t}) :\n\t\t\t\t\tnull\n\t\t\t}\n\t\t
;\n\t}\n}\n\nBox.propTypes = {\n\tdefaultPosition: PropTypes.object.isRequired,\n\tdrag: PropTypes.bool,\n\tgetBoundingBoxElement: PropTypes.func,\n\tid: PropTypes.string,\n\tisSelected: PropTypes.bool,\n\tkeybindings: PropTypes.bool,\n\tonRotateStart: PropTypes.func,\n\tonRotate: PropTypes.func,\n\tonRotateEnd: PropTypes.func,\n\tonResizeStart: PropTypes.func,\n\tonResize: PropTypes.func,\n\tonResizeEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragEnd: PropTypes.func,\n\tresize: PropTypes.bool,\n\trotate: PropTypes.bool\n};\n\nexport default Box;","export const calculateGuidePositions = (dimensions, axis) => {\n\tif (axis === 'x') {\n\t\tconst start = dimensions.left;\n\t\tconst middle = dimensions.left + parseInt(dimensions.width / 2, 10);\n\t\tconst end = dimensions.left + dimensions.width;\n\n\t\treturn [ start, middle, end ];\n\t} else {\n\t\tconst start = dimensions.top;\n\t\tconst middle = dimensions.top + parseInt(dimensions.height / 2, 10);\n\t\tconst end = dimensions.top + dimensions.height;\n\n\t\treturn [ start, middle, end ];\n\t}\n};\n\nexport const proximityListener = (active, allGuides) => {\n\tconst xAxisGuidesForActiveBox = allGuides[active].x;\n\tconst yAxisGuidesForActiveBox = allGuides[active].y;\n\n\tconst xAxisAllGuides = getAllGuidesForGivenAxisExceptActiveBox(allGuides, xAxisGuidesForActiveBox, 'x');\n\tconst yAxisAllGuides = getAllGuidesForGivenAxisExceptActiveBox(allGuides, yAxisGuidesForActiveBox, 'y');\n\tconst xAxisMatchedGuides = checkValueProximities(xAxisGuidesForActiveBox, xAxisAllGuides);\n\tconst yAxisMatchedGuides = checkValueProximities(yAxisGuidesForActiveBox, yAxisAllGuides);\n\n\tconst allMatchedGuides = {};\n\n\tif (xAxisMatchedGuides.proximity) {\n\t\tallMatchedGuides.x = {\n\t\t\t...xAxisMatchedGuides,\n\t\t\tactiveBoxGuides: xAxisGuidesForActiveBox\n\t\t};\n\t}\n\n\tif (yAxisMatchedGuides.proximity) {\n\t\tallMatchedGuides.y = {\n\t\t\t...yAxisMatchedGuides,\n\t\t\tactiveBoxGuides: yAxisGuidesForActiveBox,\n\t\t};\n\t}\n\n\treturn allMatchedGuides;\n};\n\nexport const getAllGuidesForGivenAxisExceptActiveBox = (allGuides, guidesForActiveBoxAlongGivenAxis, axis) => {\n\tconst result = Object.keys(allGuides).map(box => {\n\t\tconst currentBoxGuidesAlongGivenAxis = allGuides[box][axis];\n\t\tif (currentBoxGuidesAlongGivenAxis !== guidesForActiveBoxAlongGivenAxis) {\n\t\t\treturn currentBoxGuidesAlongGivenAxis;\n\t\t}\n\t});\n\n\treturn result.filter(guides => guides !== undefined);\n};\n\nexport const checkValueProximities = (activeBoxGuidesInOneAxis, allOtherGuidesInOneAxis) => {\n\tlet proximity = null;\n\tlet intersection = null;\n\tlet matchedArray = [];\n\tconst snapThreshold = 5;\n\tfor (let index = 0; index < allOtherGuidesInOneAxis.length; index += 1) {\n\t\tlet index2 = 0;\n\t\tlet index3 = 0;\n\n\t\twhile (index2 < activeBoxGuidesInOneAxis.length && index3 < allOtherGuidesInOneAxis[index].length) {\n\t\t\tconst diff = Math.abs(activeBoxGuidesInOneAxis[index2] - allOtherGuidesInOneAxis[index][index3]);\n\t\t\tif (diff <= snapThreshold) {\n\t\t\t\tproximity = { value: diff, activeBoxIndex: index2, matchedBoxIndex: index3 };\n\t\t\t\tmatchedArray = allOtherGuidesInOneAxis[index];\n\t\t\t\tintersection = allOtherGuidesInOneAxis[index][index3];\n\t\t\t}\n\n\t\t\tif (activeBoxGuidesInOneAxis[index2] < allOtherGuidesInOneAxis[index][index3]) {\n\t\t\t\tindex2 += 1;\n\t\t\t} else {\n\t\t\t\tindex3 += 1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { matchedArray, proximity, intersection };\n};","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Box from './Box';\nimport { calculateGuidePositions, proximityListener } from './utils/helpers';\nimport styles from './styles.scss';\n\nclass AlignmentGuides extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.boundingBox = React.createRef();\n\t\tthis.state = {\n\t\t\tactive: '',\n\t\t\tboundingBox: null,\n\t\t\tboxes: {},\n\t\t\tguides: {},\n\t\t\tguidesActive: false,\n\t\t\tmatch: {}\n\t\t};\n\t\tthis.getBoundingBoxElement = this.getBoundingBoxElement.bind(this);\n\t\tthis.onDragHandler = this.onDragHandler.bind(this);\n\t\tthis.selectBox = this.selectBox.bind(this);\n\t\tthis.unSelectBox = this.unSelectBox.bind(this);\n\t\tthis.resizeEndHandler = this.resizeEndHandler.bind(this);\n\t\tthis.deactivateGuides = this.deactivateGuides.bind(this);\n\t}\n\n\t// TODO: Remove duplicated code in componentDidMount() and componentDidUpdate() methods\n\tcomponentDidMount() {\n\t\t// Set the dimensions of the bounding box and the draggable boxes when the component mounts.\n\t\tif (this.boundingBox.current && this.state.boundingBox === null) {\n\t\t\tconst boundingBox = this.boundingBox.current.getBoundingClientRect().toJSON();\n\t\t\tconst boxes = {};\n\t\t\tconst guides = {};\n\n\t\t\t// Adding the guides for the bounding box to the guides object\n\t\t\tguides.boundingBox = {\n\t\t\t\tx: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n\t\t\t\ty: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top)\n\t\t\t};\n\n\t\t\tthis.props.boxes.forEach((dimensions, index) => {\n\t\t\t\tboxes[`box${index}`] = dimensions;\n\t\t\t\tguides[`box${index}`] = {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\tboundingBox,\n\t\t\t\tboxes,\n\t\t\t\tguides\n\t\t\t});\n\t\t}\n\t}\n\n\tcomponentWillUpdate(nextProps, nextState, nextContext) {\n\t\t// Set the dimensions of the bounding box and the draggable boxes when the component mounts.\n\t\tif (this.boundingBox.current && this.state.boundingBox === null) {\n\t\t\tconst boundingBox = this.boundingBox.current.getBoundingClientRect().toJSON();\n\t\t\tconst boxes = {};\n\t\t\tconst guides = {};\n\n\t\t\t// Adding the guides for the bounding box to the guides object\n\t\t\tguides.boundingBox = {\n\t\t\t\tx: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n\t\t\t\ty: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top)\n\t\t\t};\n\n\t\t\tthis.props.boxes.forEach((dimensions, index) => {\n\t\t\t\tboxes[`box${index}`] = dimensions;\n\t\t\t\tguides[`box${index}`] = {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\tboundingBox,\n\t\t\t\tboxes,\n\t\t\t\tguides\n\t\t\t});\n\t\t}\n\t}\n\n\tgetBoundingBoxElement() {\n\t\treturn this.boundingBox;\n\t}\n\n\tonDragHandler(e, data) {\n\t\tconst dimensions = Object.assign({}, this.state.boxes[data.node.id], {\n\t\t\tleft: data.x,\n\t\t\ttop: data.y\n\t\t});\n\t\tthis.props.onDrag && this.props.onDrag(e, data);\n\t\tthis.setState({\n\t\t\tactive: data.node.id,\n\t\t\tguidesActive: true,\n\t\t\tboxes: Object.assign({}, this.state.boxes, {\n\t\t\t\t[data.node.id]: Object.assign({}, this.state.boxes[data.node.id], {\n\t\t\t\t\tleft: data.x,\n\t\t\t\t\ttop: data.y\n\t\t\t\t})\n\t\t\t}),\n\t\t\tguides: Object.assign({}, this.state.guides, {\n\t\t\t\t[data.node.id]: Object.assign({}, this.state.guides[data.node.id], {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t})\n\t\t\t})\n\t\t}, () => {\n\t\t\tconst match = proximityListener(this.state.active, this.state.guides);\n\t\t\tlet newActiveBoxLeft = this.state.boxes[this.state.active].left;\n\t\t\tlet newActiveBoxTop = this.state.boxes[this.state.active].top;\n\t\t\tfor (let axis in match) {\n\t\t\t\tconst { activeBoxGuides, matchedArray, proximity } = match[axis];\n\t\t\t\tconst activeBoxProximityIndex = proximity.activeBoxIndex;\n\t\t\t\tconst matchedBoxProximityIndex = proximity.matchedBoxIndex;\n\n\t\t\t\tif (axis === 'x') {\n\t\t\t\t\tif (activeBoxGuides[activeBoxProximityIndex] > matchedArray[matchedBoxProximityIndex]) {\n\t\t\t\t\t\tnewActiveBoxLeft = this.state.boxes[this.state.active].left - proximity.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewActiveBoxLeft = this.state.boxes[this.state.active].left + proximity.value;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (activeBoxGuides[activeBoxProximityIndex] > matchedArray[matchedBoxProximityIndex]) {\n\t\t\t\t\t\tnewActiveBoxTop = this.state.boxes[this.state.active].top - proximity.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewActiveBoxTop = this.state.boxes[this.state.active].top + proximity.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst boxes = Object.assign({}, this.state.boxes, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.boxes[this.state.active], {\n\t\t\t\t\tleft: newActiveBoxLeft,\n\t\t\t\t\ttop: newActiveBoxTop\n\t\t\t\t})\n\t\t\t});\n\t\t\tconst guides = Object.assign({}, this.state.guides, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.guides[this.state.active], {\n\t\t\t\t\tx: calculateGuidePositions(boxes[this.state.active], 'x'),\n\t\t\t\t\ty: calculateGuidePositions(boxes[this.state.active], 'y')\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.setState({\n\t\t\t\tboxes,\n\t\t\t\tguides,\n\t\t\t\tmatch\n\t\t\t});\n\t\t});\n\t}\n\n\tselectBox(e) {\n\t\tif (e.target.id.indexOf('box') >= 0) {\n\t\t\tthis.setState({\n\t\t\t\tactive: e.target.id\n\t\t\t});\n\t\t} else if (e.target.parentNode.id.indexOf('box') >= 0) {\n\t\t\tthis.setState({\n\t\t\t\tactive: e.target.parentNode.id\n\t\t\t});\n\t\t}\n\t}\n\n\tunSelectBox(e) {\n\t\tif (e.target.parentNode.id.indexOf('box') === -1) {\n\t\t\tthis.setState({\n\t\t\t\tactive: ''\n\t\t\t});\n\t\t}\n\t}\n\n\tresizeEndHandler(e, data) {\n\t\tthis.setState({\n\t\t\tboxes: Object.assign({}, this.state.boxes, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.boxes[this.state.active], {\n\t\t\t\t\twidth: data.width,\n\t\t\t\t\theight: data.height,\n\t\t\t\t\ttop: data.y,\n\t\t\t\t\tleft: data.x\n\t\t\t\t})\n\t\t\t})\n\t\t}, () => {\n\t\t\tthis.setState({\n\t\t\t\tguides: Object.assign({}, this.state.guides, {\n\t\t\t\t\t[this.state.active]: Object.assign({}, this.state.guides[this.state.active], {\n\t\t\t\t\t\tx: calculateGuidePositions(this.state.boxes[this.state.active], 'x'),\n\t\t\t\t\t\ty: calculateGuidePositions(this.state.boxes[this.state.active], 'y')\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, () => {\n\t\t\t\tthis.props.onResizeEnd && this.props.onResizeEnd(e, data);\n\t\t\t})\n\t\t});\n\t}\n\n\tdeactivateGuides(e, data) {\n\t\tthis.setState({\n\t\t\tguidesActive: false\n\t\t}, () => {\n\t\t\tthis.props.onDragEnd && this.props.onDragEnd(e, data);\n\t\t});\n\t}\n\n\trender() {\n\t\tconst { active, boxes, guides } = this.state;\n\n\t\t// Create the draggable boxes from the position data\n\t\tconst draggableBoxes = Object.keys(boxes).map((box, index) => {\n\t\t\tconst position = boxes[box];\n\t\t\tconst id = `box${index}`;\n\n\t\t\treturn ;\n\t\t});\n\n\t\t// Create a guide(s) when the following conditions are met:\n\t\t// 1. A box aligns with another (top, center or bottom)\n\t\t// 2. An edge of a box touches any of the edges of another box\n\t\t// 3. A box aligns vertically or horizontally with the bounding box\n\t\t// TODO: Use a functional component to generate the guides for both axis instead of duplicating code.\n\t\tconst xAxisGuides = Object.keys(guides).reduce((result, box) => {\n\t\t\tconst guideClassNames = this.state.guidesActive ? `${styles.guide} ${styles.xAxis} ${styles.active}` : `${styles.guide} ${styles.xAxis}`;\n\t\t\tconst xAxisGuidesForCurrentBox = guides[box].x.map((position, index) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.state.active &&\n\t\t\t\t\tthis.state.active === box &&\n\t\t\t\t\tthis.state.match &&\n\t\t\t\t\tthis.state.match.x &&\n\t\t\t\t\tthis.state.match.x.intersection &&\n\t\t\t\t\tthis.state.match.x.intersection === position\n\t\t\t\t) {\n\t\t\t\t\treturn
;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.concat(xAxisGuidesForCurrentBox);\n\t\t}, []);\n\n\t\tconst yAxisGuides = Object.keys(guides).reduce((result, box) => {\n\t\t\tconst guideClassNames = this.state.guidesActive ? `${styles.guide} ${styles.yAxis} ${styles.active}` : `${styles.guide} ${styles.yAxis}`;\n\t\t\tconst yAxisGuidesForCurrentBox = guides[box].y.map((position, index) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.state.active &&\n\t\t\t\t\tthis.state.active === box &&\n\t\t\t\t\tthis.state.match &&\n\t\t\t\t\tthis.state.match.y &&\n\t\t\t\t\tthis.state.match.y.intersection &&\n\t\t\t\t\tthis.state.match.y.intersection === position\n\t\t\t\t) {\n\t\t\t\t\treturn
\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.concat(yAxisGuidesForCurrentBox);\n\t\t}, []);\n\n\t\treturn
\n\t\t\t{draggableBoxes}\n\t\t\t{xAxisGuides}\n\t\t\t{yAxisGuides}\n\t\t
;\n\t}\n}\n\nAlignmentGuides.propTypes = {\n\tboxes: PropTypes.array.isRequired,\n\tboxStyle: PropTypes.object,\n\tclassName: PropTypes.string,\n\tdrag: PropTypes.bool,\n\tresize: PropTypes.bool,\n\trotate: PropTypes.bool,\n\tkeybindings: PropTypes.bool,\n\tonRotateStart: PropTypes.func,\n\tonRotate: PropTypes.func,\n\tonRotateEnd: PropTypes.func,\n\tonResizeStart: PropTypes.func,\n\tonResize: PropTypes.func,\n\tonResizeEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragEnd: PropTypes.func,\n\tstyle: PropTypes.object\n};\n\nexport default AlignmentGuides;","'use strict';\n\n// import React from 'react';\n// import ReactDOM from 'react-dom';\nimport AlignmentGuides from './AlignmentGuides';\n\nexport default AlignmentGuides;\n\n// ReactDOM.render(\n// \t,\n// \tdocument.getElementById('root')\n// );"],"names":["RESIZE_HANDLES","Box","props","state","width","position","defaultPosition","height","top","left","dragging","resizing","box","React","createRef","onDragStart","bind","shortcutHandler","onResizeStart","setState","nextProps","nextState","nextContext","e","target","current","boundingBox","getBoundingBoxElement","startingPosition","getBoundingClientRect","toJSON","boundingBoxPosition","data","x","y","node","deltaX","Math","abs","offsetLeft","clientX","deltaY","offsetTop","clientY","onDrag","stopImmediatePropagation","currentPosition","offsetWidth","offsetHeight","onDragEnd","endPosition","document","removeEventListener","addEventListener","shiftKey","ctrlKey","key","startingDimensions","onResize","id","currentDimensions","onResizeEnd","dimensions","boxStyle","isSelected","boxClassNames","styles","selected","boxStyles","selectBox","map","handle","className","resizeHandle","Component","propTypes","PropTypes","object","isRequired","drag","bool","func","string","keybindings","onRotateStart","onRotate","onRotateEnd","resize","rotate","calculateGuidePositions","axis","start","middle","parseInt","end","proximityListener","active","allGuides","xAxisGuidesForActiveBox","yAxisGuidesForActiveBox","xAxisAllGuides","getAllGuidesForGivenAxisExceptActiveBox","yAxisAllGuides","xAxisMatchedGuides","checkValueProximities","yAxisMatchedGuides","allMatchedGuides","proximity","activeBoxGuides","guidesForActiveBoxAlongGivenAxis","result","Object","keys","currentBoxGuidesAlongGivenAxis","filter","guides","undefined","activeBoxGuidesInOneAxis","allOtherGuidesInOneAxis","intersection","matchedArray","snapThreshold","index","length","index2","index3","diff","value","activeBoxIndex","matchedBoxIndex","AlignmentGuides","boxes","guidesActive","match","onDragHandler","unSelectBox","resizeEndHandler","deactivateGuides","forEach","assign","newActiveBoxLeft","newActiveBoxTop","activeBoxProximityIndex","matchedBoxProximityIndex","indexOf","parentNode","draggableBoxes","xAxisGuides","reduce","guideClassNames","guide","xAxis","xAxisGuidesForCurrentBox","concat","yAxisGuides","yAxis","yAxisGuidesForCurrentBox","style","array"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.es.js","sources":["../src/utils/constants.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Box.js","../src/utils/helpers.js","../src/AlignmentGuides.js","../src/index.js"],"sourcesContent":["// Key map for changing the position and size of draggable boxes\n// Key map follows the Mousetrap syntax: https://craig.is/killing/mice\nexport const KEY_MAP = {\n\tMOVE_LEFT_1_PX: 'left',\n\tMOVE_RIGHT_1_PX: 'right',\n\tMOVE_UP_1_PX: 'up',\n\tMOVE_DOWN_1_PX: 'down',\n\tMOVE_LEFT_10_PX: 'shift+left',\n\tMOVE_RIGHT_10_PX: 'shift+right',\n\tMOVE_UP_10_PX: 'shift+up',\n\tMOVE_DOWN_10_PX: 'shift+down'\n};\n\n// Positions for resize handles\nexport const RESIZE_HANDLES = ['tr', 'tl', 'br', 'bl'];\n\n// Positions for rotate handles\nexport const ROTATE_HANDLES = ['tr', 'tl', 'br', 'bl'];\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { RESIZE_HANDLES } from './utils/constants';\nimport styles from './styles.scss';\n\nclass Box extends PureComponent {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\twidth: props.position ? props.position.width : props.defaultPosition.width,\n\t\t\theight: props.position ? props.position.height : props.defaultPosition.height,\n\t\t\ttop: props.position ? props.position.top : props.defaultPosition.top,\n\t\t\tleft: props.position ? props.position.left : props.defaultPosition.left\n\t\t};\n\n\t\tthis.dragging = false;\n\t\tthis.resizing = false;\n\n\t\tthis.box = React.createRef();\n\t\tthis.onDragStart = this.onDragStart.bind(this);\n\t\tthis.shortcutHandler = this.shortcutHandler.bind(this);\n\t\tthis.onResizeStart = this.onResizeStart.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { defaultPosition } = this.props;\n\t\tthis.setState({\n\t\t\twidth: defaultPosition.width,\n\t\t\theight: defaultPosition.height,\n\t\t\ttop: defaultPosition.top,\n\t\t\tleft: defaultPosition.left\n\t\t});\n\t}\n\n\tcomponentWillUpdate(nextProps, nextState, nextContext) {\n\t\tif (this.props.position !== nextProps.position) {\n\t\t\tthis.setState({\n\t\t\t\twidth: nextProps.position.width,\n\t\t\t\theight: nextProps.position.height,\n\t\t\t\ttop: nextProps.position.top,\n\t\t\t\tleft: nextProps.position.left\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragStart(e) {\n\t\tconst target = this.box.current;\n\t\tconst boundingBox = this.props.getBoundingBoxElement();\n\t\tconst startingPosition = target.getBoundingClientRect().toJSON();\n\t\tconst boundingBoxPosition = boundingBox.current.getBoundingClientRect().toJSON();\n\t\tconst data = {\n\t\t\tx: startingPosition.x - boundingBoxPosition.x,\n\t\t\ty: startingPosition.y - boundingBoxPosition.y,\n\t\t\twidth: startingPosition.width,\n\t\t\theight: startingPosition.height,\n\t\t\tnode: target\n\t\t};\n\t\tthis.props.onDragStart && this.props.onDragStart(e, data);\n\t\tthis.dragging = true;\n\n\t\tconst deltaX = Math.abs(target.offsetLeft - e.clientX);\n\t\tconst deltaY = Math.abs(target.offsetTop - e.clientY);\n\n\t\tconst onDrag = (e) => {\n\t\t\tif (this.dragging) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tconst currentPosition = {\n\t\t\t\t\tleft: e.clientX - deltaX,\n\t\t\t\t\ttop: e.clientY - deltaY\n\t\t\t\t};\n\t\t\t\tconst data = {\n\t\t\t\t\tx: currentPosition.left,\n\t\t\t\t\ty: currentPosition.top,\n\t\t\t\t\twidth: target.offsetWidth,\n\t\t\t\t\theight: target.offsetHeight,\n\t\t\t\t\tnode: target\n\t\t\t\t};\n\t\t\t\tthis.setState({\n\t\t\t\t\tleft: currentPosition.left,\n\t\t\t\t\ttop: currentPosition.top\n\t\t\t\t}, () => {\n\t\t\t\t\tthis.props.onDrag && this.props.onDrag(e, data);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst onDragEnd = (e) => {\n\t\t\tif (this.dragging) {\n\t\t\t\tconst endPosition = {\n\t\t\t\t\tleft: e.clientX - deltaX,\n\t\t\t\t\ttop: e.clientY - deltaY\n\t\t\t\t};\n\t\t\t\tconst data = {\n\t\t\t\t\tx: endPosition.left,\n\t\t\t\t\ty: endPosition.top,\n\t\t\t\t\twidth: target.offsetWidth,\n\t\t\t\t\theight: target.offsetHeight,\n\t\t\t\t\tnode: target\n\t\t\t\t};\n\t\t\t\tthis.props.onDragEnd && this.props.onDragEnd(e, data);\n\t\t\t\tdocument.removeEventListener('mousemove', onDrag);\n\t\t\t\tdocument.removeEventListener('mouseup', onDragEnd);\n\t\t\t\tthis.dragging = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousemove', onDrag);\n\t\tdocument.addEventListener('mouseup', onDragEnd);\n\t}\n\n\tshortcutHandler(e) {\n\t\tif (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left + 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left + 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left - 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\tleft: this.state.left - 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top - 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top - 10\n\t\t\t});\n\t\t} else if (!e.shiftKey && !e.ctrlKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top + 1\n\t\t\t});\n\t\t} else if (e.shiftKey && !e.ctrlKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\ttop: this.state.top + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width + 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowRight') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width - 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowLeft') {\n\t\t\tthis.setState({\n\t\t\t\twidth: this.state.width - 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height + 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowDown') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height + 10\n\t\t\t});\n\t\t} else if (e.ctrlKey && !e.shiftKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height - 1\n\t\t\t});\n\t\t} else if (e.ctrlKey && e.shiftKey && e.key === 'ArrowUp') {\n\t\t\tthis.setState({\n\t\t\t\theight: this.state.height - 10\n\t\t\t});\n\t\t}\n\t}\n\n\tonResizeStart(e) {\n\t\tconst { target } = e;\n\t\tconst boundingBox = this.props.getBoundingBoxElement();\n\t\tconst startingDimensions = this.box.current.getBoundingClientRect().toJSON();\n\t\tconst boundingBoxPosition = boundingBox.current.getBoundingClientRect().toJSON();\n\t\tconst data = {\n\t\t\twidth: startingDimensions.width,\n\t\t\theight: startingDimensions.height,\n\t\t\tx: startingDimensions.left - boundingBoxPosition.x,\n\t\t\ty: startingDimensions.top - boundingBoxPosition.y,\n\t\t\tnode: this.box.current\n\t\t};\n\t\tthis.props.onResizeStart && this.props.onResizeStart(e, data);\n\t\tthis.resizing = true;\n\n\t\tconst onResize = (e) => {\n\t\t\tif (this.resizing) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tif (target.id === 'br') {\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: e.clientX - startingDimensions.left,\n\t\t\t\t\t\theight: e.clientY - startingDimensions.top\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: startingDimensions.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: startingDimensions.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'bl') {\n\t\t\t\t\tconst deltaX = startingDimensions.left - e.clientX;\n\t\t\t\t\tconst deltaY = startingDimensions.top + startingDimensions.height - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: startingDimensions.width + deltaX,\n\t\t\t\t\t\theight: startingDimensions.height - deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top,\n\t\t\t\t\t\tleft: startingDimensions.left - deltaX\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'tr') {\n\t\t\t\t\tconst deltaX = e.clientX - startingDimensions.left;\n\t\t\t\t\tconst deltaY = startingDimensions.top - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: deltaX,\n\t\t\t\t\t\theight: startingDimensions.height + deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top - deltaY,\n\t\t\t\t\t\tleft: startingDimensions.left\n\t\t\t\t\t};\n\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t} else if (target.id === 'tl') {\n\t\t\t\t\tconst deltaX = startingDimensions.left - e.clientX;\n\t\t\t\t\tconst deltaY = startingDimensions.top - e.clientY;\n\t\t\t\t\tconst currentDimensions = {\n\t\t\t\t\t\twidth: startingDimensions.width + deltaX,\n\t\t\t\t\t\theight: startingDimensions.height + deltaY\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentPosition = {\n\t\t\t\t\t\ttop: startingDimensions.top - deltaY,\n\t\t\t\t\t\tleft: startingDimensions.left - deltaX\n\t\t\t\t\t};\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\tx: currentPosition.left - boundingBoxPosition.x,\n\t\t\t\t\t\ty: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tnode: this.box.current\n\t\t\t\t\t};\n\t\t\t\t\tthis.props.onResize && this.props.onResize(e, data);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\twidth: currentDimensions.width,\n\t\t\t\t\t\theight: currentDimensions.height,\n\t\t\t\t\t\ttop: currentPosition.top - boundingBoxPosition.y,\n\t\t\t\t\t\tleft: currentPosition.left - boundingBoxPosition.x\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst onResizeEnd = (e) => {\n\t\t\tif (this.resizing) {\n\t\t\t\tdocument.removeEventListener('mousemove', onResize);\n\t\t\t\tdocument.removeEventListener('mouseup', onResizeEnd);\n\n\t\t\t\tconst dimensions = this.box.current.getBoundingClientRect().toJSON();\n\t\t\t\tconst data = {\n\t\t\t\t\twidth: dimensions.width,\n\t\t\t\t\theight: dimensions.height,\n\t\t\t\t\ty: dimensions.top - boundingBoxPosition.y,\n\t\t\t\t\tx: dimensions.left - boundingBoxPosition.x,\n\t\t\t\t\tnode: this.box.current\n\t\t\t\t};\n\t\t\t\tthis.props.onResizeEnd && this.props.onResizeEnd(e, data);\n\t\t\t\tthis.resizing = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousemove', onResize);\n\t\tdocument.addEventListener('mouseup', onResizeEnd);\n\t}\n\n\trender() {\n\t\tconst { boxStyle, id, isSelected } = this.props;\n\t\tconst boxClassNames = isSelected ? `${styles.box} ${styles.selected}` : styles.box;\n\t\tconst boxStyles = {\n\t\t\t...boxStyle,\n\t\t\twidth: `${this.state.width}px`,\n\t\t\theight: `${this.state.height}px`,\n\t\t\ttop: `${this.state.top}px`,\n\t\t\tleft: `${this.state.left}px`\n\t\t};\n\n\t\treturn \n\t\t\t{\n\t\t\t\tisSelected ?\n\t\t\t\t\tRESIZE_HANDLES.map(handle => {\n\t\t\t\t\t\tconst className = `${styles.resizeHandle} ${styles[`resize-${handle}`]}`;\n\t\t\t\t\t\treturn
\n\t\t\t\t\t}) :\n\t\t\t\t\tnull\n\t\t\t}\n\t\t
;\n\t}\n}\n\nBox.propTypes = {\n\tdefaultPosition: PropTypes.object.isRequired,\n\tdrag: PropTypes.bool,\n\tgetBoundingBoxElement: PropTypes.func,\n\tid: PropTypes.string,\n\tisSelected: PropTypes.bool,\n\tkeybindings: PropTypes.bool,\n\tonRotateStart: PropTypes.func,\n\tonRotate: PropTypes.func,\n\tonRotateEnd: PropTypes.func,\n\tonResizeStart: PropTypes.func,\n\tonResize: PropTypes.func,\n\tonResizeEnd: PropTypes.func,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragEnd: PropTypes.func,\n\tresize: PropTypes.bool,\n\trotate: PropTypes.bool\n};\n\nexport default Box;","export const calculateGuidePositions = (dimensions, axis) => {\n\tif (axis === 'x') {\n\t\tconst start = dimensions.left;\n\t\tconst middle = dimensions.left + parseInt(dimensions.width / 2, 10);\n\t\tconst end = dimensions.left + dimensions.width;\n\n\t\treturn [ start, middle, end ];\n\t} else {\n\t\tconst start = dimensions.top;\n\t\tconst middle = dimensions.top + parseInt(dimensions.height / 2, 10);\n\t\tconst end = dimensions.top + dimensions.height;\n\n\t\treturn [ start, middle, end ];\n\t}\n};\n\nexport const proximityListener = (active, allGuides) => {\n\tconst xAxisGuidesForActiveBox = allGuides[active].x;\n\tconst yAxisGuidesForActiveBox = allGuides[active].y;\n\n\tconst xAxisAllGuides = getAllGuidesForGivenAxisExceptActiveBox(allGuides, xAxisGuidesForActiveBox, 'x');\n\tconst yAxisAllGuides = getAllGuidesForGivenAxisExceptActiveBox(allGuides, yAxisGuidesForActiveBox, 'y');\n\tconst xAxisMatchedGuides = checkValueProximities(xAxisGuidesForActiveBox, xAxisAllGuides);\n\tconst yAxisMatchedGuides = checkValueProximities(yAxisGuidesForActiveBox, yAxisAllGuides);\n\n\tconst allMatchedGuides = {};\n\n\tif (xAxisMatchedGuides.proximity) {\n\t\tallMatchedGuides.x = {\n\t\t\t...xAxisMatchedGuides,\n\t\t\tactiveBoxGuides: xAxisGuidesForActiveBox\n\t\t};\n\t}\n\n\tif (yAxisMatchedGuides.proximity) {\n\t\tallMatchedGuides.y = {\n\t\t\t...yAxisMatchedGuides,\n\t\t\tactiveBoxGuides: yAxisGuidesForActiveBox,\n\t\t};\n\t}\n\n\treturn allMatchedGuides;\n};\n\nexport const getAllGuidesForGivenAxisExceptActiveBox = (allGuides, guidesForActiveBoxAlongGivenAxis, axis) => {\n\tconst result = Object.keys(allGuides).map(box => {\n\t\tconst currentBoxGuidesAlongGivenAxis = allGuides[box][axis];\n\t\tif (currentBoxGuidesAlongGivenAxis !== guidesForActiveBoxAlongGivenAxis) {\n\t\t\treturn currentBoxGuidesAlongGivenAxis;\n\t\t}\n\t});\n\n\treturn result.filter(guides => guides !== undefined);\n};\n\nexport const checkValueProximities = (activeBoxGuidesInOneAxis, allOtherGuidesInOneAxis) => {\n\tlet proximity = null;\n\tlet intersection = null;\n\tlet matchedArray = [];\n\tconst snapThreshold = 5;\n\tfor (let index = 0; index < allOtherGuidesInOneAxis.length; index += 1) {\n\t\tlet index2 = 0;\n\t\tlet index3 = 0;\n\n\t\twhile (index2 < activeBoxGuidesInOneAxis.length && index3 < allOtherGuidesInOneAxis[index].length) {\n\t\t\tconst diff = Math.abs(activeBoxGuidesInOneAxis[index2] - allOtherGuidesInOneAxis[index][index3]);\n\t\t\tif (diff <= snapThreshold) {\n\t\t\t\tproximity = { value: diff, activeBoxIndex: index2, matchedBoxIndex: index3 };\n\t\t\t\tmatchedArray = allOtherGuidesInOneAxis[index];\n\t\t\t\tintersection = allOtherGuidesInOneAxis[index][index3];\n\t\t\t}\n\n\t\t\tif (activeBoxGuidesInOneAxis[index2] < allOtherGuidesInOneAxis[index][index3]) {\n\t\t\t\tindex2 += 1;\n\t\t\t} else {\n\t\t\t\tindex3 += 1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { matchedArray, proximity, intersection };\n};","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Box from './Box';\nimport { calculateGuidePositions, proximityListener } from './utils/helpers';\nimport styles from './styles.scss';\n\nclass AlignmentGuides extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.boundingBox = React.createRef();\n\t\tthis.state = {\n\t\t\tactive: '',\n\t\t\tboundingBox: null,\n\t\t\tboxes: {},\n\t\t\tguides: {},\n\t\t\tguidesActive: false,\n\t\t\tmatch: {}\n\t\t};\n\t\tthis.getBoundingBoxElement = this.getBoundingBoxElement.bind(this);\n\t\tthis.onDragHandler = this.onDragHandler.bind(this);\n\t\tthis.selectBox = this.selectBox.bind(this);\n\t\tthis.unSelectBox = this.unSelectBox.bind(this);\n\t\tthis.resizeEndHandler = this.resizeEndHandler.bind(this);\n\t\tthis.deactivateGuides = this.deactivateGuides.bind(this);\n\t}\n\n\t// TODO: Remove duplicated code in componentDidMount() and componentDidUpdate() methods\n\tcomponentDidMount() {\n\t\t// Set the dimensions of the bounding box and the draggable boxes when the component mounts.\n\t\tif (this.boundingBox.current && this.state.boundingBox === null) {\n\t\t\tconst boundingBox = this.boundingBox.current.getBoundingClientRect().toJSON();\n\t\t\tconst boxes = {};\n\t\t\tconst guides = {};\n\n\t\t\t// Adding the guides for the bounding box to the guides object\n\t\t\tguides.boundingBox = {\n\t\t\t\tx: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n\t\t\t\ty: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top)\n\t\t\t};\n\n\t\t\tthis.props.boxes.forEach((dimensions, index) => {\n\t\t\t\tboxes[`box${index}`] = dimensions;\n\t\t\t\tguides[`box${index}`] = {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\tboundingBox,\n\t\t\t\tboxes,\n\t\t\t\tguides\n\t\t\t});\n\t\t}\n\t}\n\n\tcomponentWillUpdate(nextProps, nextState, nextContext) {\n\t\t// Set the dimensions of the bounding box and the draggable boxes when the component mounts.\n\t\tif (this.boundingBox.current && this.state.boundingBox === null) {\n\t\t\tconst boundingBox = this.boundingBox.current.getBoundingClientRect().toJSON();\n\t\t\tconst boxes = {};\n\t\t\tconst guides = {};\n\n\t\t\t// Adding the guides for the bounding box to the guides object\n\t\t\tguides.boundingBox = {\n\t\t\t\tx: calculateGuidePositions(boundingBox, 'x').map(value => value - boundingBox.left),\n\t\t\t\ty: calculateGuidePositions(boundingBox, 'y').map(value => value - boundingBox.top)\n\t\t\t};\n\n\t\t\tthis.props.boxes.forEach((dimensions, index) => {\n\t\t\t\tboxes[`box${index}`] = dimensions;\n\t\t\t\tguides[`box${index}`] = {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.setState({\n\t\t\t\tboundingBox,\n\t\t\t\tboxes,\n\t\t\t\tguides\n\t\t\t});\n\t\t}\n\t}\n\n\tgetBoundingBoxElement() {\n\t\treturn this.boundingBox;\n\t}\n\n\tonDragHandler(e, data) {\n\t\tconst dimensions = Object.assign({}, this.state.boxes[data.node.id], {\n\t\t\tleft: data.x,\n\t\t\ttop: data.y\n\t\t});\n\t\tthis.props.onDrag && this.props.onDrag(e, data);\n\t\tthis.setState({\n\t\t\tactive: data.node.id,\n\t\t\tguidesActive: true,\n\t\t\tboxes: Object.assign({}, this.state.boxes, {\n\t\t\t\t[data.node.id]: Object.assign({}, this.state.boxes[data.node.id], {\n\t\t\t\t\tleft: data.x,\n\t\t\t\t\ttop: data.y\n\t\t\t\t})\n\t\t\t}),\n\t\t\tguides: Object.assign({}, this.state.guides, {\n\t\t\t\t[data.node.id]: Object.assign({}, this.state.guides[data.node.id], {\n\t\t\t\t\tx: calculateGuidePositions(dimensions, 'x'),\n\t\t\t\t\ty: calculateGuidePositions(dimensions, 'y')\n\t\t\t\t})\n\t\t\t})\n\t\t}, () => {\n\t\t\tconst match = proximityListener(this.state.active, this.state.guides);\n\t\t\tlet newActiveBoxLeft = this.state.boxes[this.state.active].left;\n\t\t\tlet newActiveBoxTop = this.state.boxes[this.state.active].top;\n\t\t\tfor (let axis in match) {\n\t\t\t\tconst { activeBoxGuides, matchedArray, proximity } = match[axis];\n\t\t\t\tconst activeBoxProximityIndex = proximity.activeBoxIndex;\n\t\t\t\tconst matchedBoxProximityIndex = proximity.matchedBoxIndex;\n\n\t\t\t\tif (axis === 'x') {\n\t\t\t\t\tif (activeBoxGuides[activeBoxProximityIndex] > matchedArray[matchedBoxProximityIndex]) {\n\t\t\t\t\t\tnewActiveBoxLeft = this.state.boxes[this.state.active].left - proximity.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewActiveBoxLeft = this.state.boxes[this.state.active].left + proximity.value;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (activeBoxGuides[activeBoxProximityIndex] > matchedArray[matchedBoxProximityIndex]) {\n\t\t\t\t\t\tnewActiveBoxTop = this.state.boxes[this.state.active].top - proximity.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewActiveBoxTop = this.state.boxes[this.state.active].top + proximity.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst boxes = Object.assign({}, this.state.boxes, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.boxes[this.state.active], {\n\t\t\t\t\tleft: newActiveBoxLeft,\n\t\t\t\t\ttop: newActiveBoxTop\n\t\t\t\t})\n\t\t\t});\n\t\t\tconst guides = Object.assign({}, this.state.guides, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.guides[this.state.active], {\n\t\t\t\t\tx: calculateGuidePositions(boxes[this.state.active], 'x'),\n\t\t\t\t\ty: calculateGuidePositions(boxes[this.state.active], 'y')\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.setState({\n\t\t\t\tboxes,\n\t\t\t\tguides,\n\t\t\t\tmatch\n\t\t\t});\n\t\t});\n\t}\n\n\tselectBox(e) {\n\t\tif (e.target.id.indexOf('box') >= 0) {\n\t\t\tthis.setState({\n\t\t\t\tactive: e.target.id\n\t\t\t});\n\t\t} else if (e.target.parentNode.id.indexOf('box') >= 0) {\n\t\t\tthis.setState({\n\t\t\t\tactive: e.target.parentNode.id\n\t\t\t});\n\t\t}\n\t}\n\n\tunSelectBox(e) {\n\t\tif (e.target.parentNode.id.indexOf('box') === -1) {\n\t\t\tthis.setState({\n\t\t\t\tactive: ''\n\t\t\t});\n\t\t}\n\t}\n\n\tresizeEndHandler(e, data) {\n\t\tthis.setState({\n\t\t\tboxes: Object.assign({}, this.state.boxes, {\n\t\t\t\t[this.state.active]: Object.assign({}, this.state.boxes[this.state.active], {\n\t\t\t\t\twidth: data.width,\n\t\t\t\t\theight: data.height,\n\t\t\t\t\ttop: data.y,\n\t\t\t\t\tleft: data.x\n\t\t\t\t})\n\t\t\t})\n\t\t}, () => {\n\t\t\tthis.setState({\n\t\t\t\tguides: Object.assign({}, this.state.guides, {\n\t\t\t\t\t[this.state.active]: Object.assign({}, this.state.guides[this.state.active], {\n\t\t\t\t\t\tx: calculateGuidePositions(this.state.boxes[this.state.active], 'x'),\n\t\t\t\t\t\ty: calculateGuidePositions(this.state.boxes[this.state.active], 'y')\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, () => {\n\t\t\t\tthis.props.onResizeEnd && this.props.onResizeEnd(e, data);\n\t\t\t})\n\t\t});\n\t}\n\n\tdeactivateGuides(e, data) {\n\t\tthis.setState({\n\t\t\tguidesActive: false\n\t\t}, () => {\n\t\t\tthis.props.onDragEnd && this.props.onDragEnd(e, data);\n\t\t});\n\t}\n\n\trender() {\n\t\tconst { active, boxes, guides } = this.state;\n\n\t\t// Create the draggable boxes from the position data\n\t\tconst draggableBoxes = Object.keys(boxes).map((box, index) => {\n\t\t\tconst position = boxes[box];\n\t\t\tconst id = `box${index}`;\n\n\t\t\treturn ;\n\t\t});\n\n\t\t// Create a guide(s) when the following conditions are met:\n\t\t// 1. A box aligns with another (top, center or bottom)\n\t\t// 2. An edge of a box touches any of the edges of another box\n\t\t// 3. A box aligns vertically or horizontally with the bounding box\n\t\t// TODO: Use a functional component to generate the guides for both axis instead of duplicating code.\n\t\tconst xAxisGuides = Object.keys(guides).reduce((result, box) => {\n\t\t\tconst guideClassNames = this.state.guidesActive ? `${styles.guide} ${styles.xAxis} ${styles.active}` : `${styles.guide} ${styles.xAxis}`;\n\t\t\tconst xAxisGuidesForCurrentBox = guides[box].x.map((position, index) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.state.active &&\n\t\t\t\t\tthis.state.active === box &&\n\t\t\t\t\tthis.state.match &&\n\t\t\t\t\tthis.state.match.x &&\n\t\t\t\t\tthis.state.match.x.intersection &&\n\t\t\t\t\tthis.state.match.x.intersection === position\n\t\t\t\t) {\n\t\t\t\t\treturn
;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.concat(xAxisGuidesForCurrentBox);\n\t\t}, []);\n\n\t\tconst yAxisGuides = Object.keys(guides).reduce((result, box) => {\n\t\t\tconst guideClassNames = this.state.guidesActive ? `${styles.guide} ${styles.yAxis} ${styles.active}` : `${styles.guide} ${styles.yAxis}`;\n\t\t\tconst yAxisGuidesForCurrentBox = guides[box].y.map((position, index) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.state.active &&\n\t\t\t\t\tthis.state.active === box &&\n\t\t\t\t\tthis.state.match &&\n\t\t\t\t\tthis.state.match.y &&\n\t\t\t\t\tthis.state.match.y.intersection &&\n\t\t\t\t\tthis.state.match.y.intersection === position\n\t\t\t\t) {\n\t\t\t\t\treturn
\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.concat(yAxisGuidesForCurrentBox);\n\t\t}, []);\n\n\t\treturn
\n\t\t\t{draggableBoxes}\n\t\t\t{xAxisGuides}\n\t\t\t{yAxisGuides}\n\t\t
;\n\t}\n}\n\nAlignmentGuides.propTypes = {\n\tboxes: PropTypes.array.isRequired,\n\tboxStyle: PropTypes.object,\n\tclassName: PropTypes.string,\n\tdrag: PropTypes.bool,\n\tkeybindings: PropTypes.bool,\n\tonDragStart: PropTypes.func,\n\tonDrag: PropTypes.func,\n\tonDragEnd: PropTypes.func,\n\tonResizeStart: PropTypes.func,\n\tonResize: PropTypes.func,\n\tonResizeEnd: PropTypes.func,\n\tonRotateStart: PropTypes.func,\n\tonRotate: PropTypes.func,\n\tonRotateEnd: PropTypes.func,\n\tresize: PropTypes.bool,\n\trotate: PropTypes.bool,\n\tstyle: PropTypes.object\n};\n\nexport default AlignmentGuides;","'use strict';\n\n// import React from 'react';\n// import ReactDOM from 'react-dom';\nimport AlignmentGuides from './AlignmentGuides';\n\nexport default AlignmentGuides;\n\n// ReactDOM.render(\n// \t,\n// \tdocument.getElementById('root')\n// );"],"names":["RESIZE_HANDLES","Box","props","state","width","position","defaultPosition","height","top","left","dragging","resizing","box","React","createRef","onDragStart","bind","shortcutHandler","onResizeStart","setState","nextProps","nextState","nextContext","e","target","current","boundingBox","getBoundingBoxElement","startingPosition","getBoundingClientRect","toJSON","boundingBoxPosition","data","x","y","node","deltaX","Math","abs","offsetLeft","clientX","deltaY","offsetTop","clientY","onDrag","stopImmediatePropagation","currentPosition","offsetWidth","offsetHeight","onDragEnd","endPosition","document","removeEventListener","addEventListener","shiftKey","ctrlKey","key","startingDimensions","onResize","id","currentDimensions","onResizeEnd","dimensions","boxStyle","isSelected","boxClassNames","styles","selected","boxStyles","selectBox","map","handle","className","resizeHandle","PureComponent","propTypes","PropTypes","object","isRequired","drag","bool","func","string","keybindings","onRotateStart","onRotate","onRotateEnd","resize","rotate","calculateGuidePositions","axis","start","middle","parseInt","end","proximityListener","active","allGuides","xAxisGuidesForActiveBox","yAxisGuidesForActiveBox","xAxisAllGuides","getAllGuidesForGivenAxisExceptActiveBox","yAxisAllGuides","xAxisMatchedGuides","checkValueProximities","yAxisMatchedGuides","allMatchedGuides","proximity","activeBoxGuides","guidesForActiveBoxAlongGivenAxis","result","Object","keys","currentBoxGuidesAlongGivenAxis","filter","guides","undefined","activeBoxGuidesInOneAxis","allOtherGuidesInOneAxis","intersection","matchedArray","snapThreshold","index","length","index2","index3","diff","value","activeBoxIndex","matchedBoxIndex","AlignmentGuides","boxes","guidesActive","match","onDragHandler","unSelectBox","resizeEndHandler","deactivateGuides","forEach","assign","newActiveBoxLeft","newActiveBoxTop","activeBoxProximityIndex","matchedBoxProximityIndex","indexOf","parentNode","draggableBoxes","xAxisGuides","reduce","guideClassNames","guide","xAxis","xAxisGuidesForCurrentBox","concat","yAxisGuides","yAxis","yAxisGuidesForCurrentBox","style","Component","array"],"mappings":";;;AAAA;AACA;AAaA,AAAO,IAAMA,cAAc,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,CAAvB;;ACdP,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;EAC7B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;EAC/B,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;;EAE5B,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;;EAExD,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EAC5C,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;;EAExB,IAAI,QAAQ,KAAK,KAAK,EAAE;IACtB,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3C,MAAM;MACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;GACF,MAAM;IACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;GACzB;;EAED,IAAI,KAAK,CAAC,UAAU,EAAE;IACpB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;GAChC,MAAM;IACL,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;GACjD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICpBKC;;;;;eACOC,KAAZ,EAAmB;;;;;6EACZA,KAAN;UACKC,KAAL,GAAa;MACZC,KAAK,EAAEF,KAAK,CAACG,QAAN,GAAiBH,KAAK,CAACG,QAAN,CAAeD,KAAhC,GAAwCF,KAAK,CAACI,eAAN,CAAsBF,KADzD;MAEZG,MAAM,EAAEL,KAAK,CAACG,QAAN,GAAiBH,KAAK,CAACG,QAAN,CAAeE,MAAhC,GAAyCL,KAAK,CAACI,eAAN,CAAsBC,MAF3D;MAGZC,GAAG,EAAEN,KAAK,CAACG,QAAN,GAAiBH,KAAK,CAACG,QAAN,CAAeG,GAAhC,GAAsCN,KAAK,CAACI,eAAN,CAAsBE,GAHrD;MAIZC,IAAI,EAAEP,KAAK,CAACG,QAAN,GAAiBH,KAAK,CAACG,QAAN,CAAeI,IAAhC,GAAuCP,KAAK,CAACI,eAAN,CAAsBG;KAJpE;UAOKC,QAAL,GAAgB,KAAhB;UACKC,QAAL,GAAgB,KAAhB;UAEKC,GAAL,GAAWC,KAAK,CAACC,SAAN,EAAX;UACKC,WAAL,GAAmB,MAAKA,WAAL,CAAiBC,IAAjB,+BAAnB;UACKC,eAAL,GAAuB,MAAKA,eAAL,CAAqBD,IAArB,+BAAvB;UACKE,aAAL,GAAqB,MAAKA,aAAL,CAAmBF,IAAnB,+BAArB;;;;;;wCAGmB;UACXV,eADW,GACS,KAAKJ,KADd,CACXI,eADW;WAEda,QAAL,CAAc;QACbf,KAAK,EAAEE,eAAe,CAACF,KADV;QAEbG,MAAM,EAAED,eAAe,CAACC,MAFX;QAGbC,GAAG,EAAEF,eAAe,CAACE,GAHR;QAIbC,IAAI,EAAEH,eAAe,CAACG;OAJvB;;;;wCAQmBW,WAAWC,WAAWC,aAAa;UAClD,KAAKpB,KAAL,CAAWG,QAAX,KAAwBe,SAAS,CAACf,QAAtC,EAAgD;aAC1Cc,QAAL,CAAc;UACbf,KAAK,EAAEgB,SAAS,CAACf,QAAV,CAAmBD,KADb;UAEbG,MAAM,EAAEa,SAAS,CAACf,QAAV,CAAmBE,MAFd;UAGbC,GAAG,EAAEY,SAAS,CAACf,QAAV,CAAmBG,GAHX;UAIbC,IAAI,EAAEW,SAAS,CAACf,QAAV,CAAmBI;SAJ1B;;;;;gCASUc,GAAG;;;UACRC,MAAM,GAAG,KAAKZ,GAAL,CAASa,OAAxB;UACMC,WAAW,GAAG,KAAKxB,KAAL,CAAWyB,qBAAX,EAApB;UACMC,gBAAgB,GAAGJ,MAAM,CAACK,qBAAP,GAA+BC,MAA/B,EAAzB;UACMC,mBAAmB,GAAGL,WAAW,CAACD,OAAZ,CAAoBI,qBAApB,GAA4CC,MAA5C,EAA5B;UACME,IAAI,GAAG;QACZC,CAAC,EAAEL,gBAAgB,CAACK,CAAjB,GAAqBF,mBAAmB,CAACE,CADhC;QAEZC,CAAC,EAAEN,gBAAgB,CAACM,CAAjB,GAAqBH,mBAAmB,CAACG,CAFhC;QAGZ9B,KAAK,EAAEwB,gBAAgB,CAACxB,KAHZ;QAIZG,MAAM,EAAEqB,gBAAgB,CAACrB,MAJb;QAKZ4B,IAAI,EAAEX;OALP;WAOKtB,KAAL,CAAWa,WAAX,IAA0B,KAAKb,KAAL,CAAWa,WAAX,CAAuBQ,CAAvB,EAA0BS,IAA1B,CAA1B;WACKtB,QAAL,GAAgB,IAAhB;UAEM0B,MAAM,GAAGC,IAAI,CAACC,GAAL,CAASd,MAAM,CAACe,UAAP,GAAoBhB,CAAC,CAACiB,OAA/B,CAAf;UACMC,MAAM,GAAGJ,IAAI,CAACC,GAAL,CAASd,MAAM,CAACkB,SAAP,GAAmBnB,CAAC,CAACoB,OAA9B,CAAf;;UAEMC,MAAM,GAAG,SAATA,MAAS,CAACrB,CAAD,EAAO;YACjB,MAAI,CAACb,QAAT,EAAmB;UAClBa,CAAC,CAACsB,wBAAF;cACMC,eAAe,GAAG;YACvBrC,IAAI,EAAEc,CAAC,CAACiB,OAAF,GAAYJ,MADK;YAEvB5B,GAAG,EAAEe,CAAC,CAACoB,OAAF,GAAYF;WAFlB;cAIMT,KAAI,GAAG;YACZC,CAAC,EAAEa,eAAe,CAACrC,IADP;YAEZyB,CAAC,EAAEY,eAAe,CAACtC,GAFP;YAGZJ,KAAK,EAAEoB,MAAM,CAACuB,WAHF;YAIZxC,MAAM,EAAEiB,MAAM,CAACwB,YAJH;YAKZb,IAAI,EAAEX;WALP;;UAOA,MAAI,CAACL,QAAL,CAAc;YACbV,IAAI,EAAEqC,eAAe,CAACrC,IADT;YAEbD,GAAG,EAAEsC,eAAe,CAACtC;WAFtB,EAGG,YAAM;YACR,MAAI,CAACN,KAAL,CAAW0C,MAAX,IAAqB,MAAI,CAAC1C,KAAL,CAAW0C,MAAX,CAAkBrB,CAAlB,EAAqBS,KAArB,CAArB;WAJD;;OAdF;;UAuBMiB,SAAS,GAAG,SAAZA,SAAY,CAAC1B,CAAD,EAAO;YACpB,MAAI,CAACb,QAAT,EAAmB;cACZwC,WAAW,GAAG;YACnBzC,IAAI,EAAEc,CAAC,CAACiB,OAAF,GAAYJ,MADC;YAEnB5B,GAAG,EAAEe,CAAC,CAACoB,OAAF,GAAYF;WAFlB;cAIMT,MAAI,GAAG;YACZC,CAAC,EAAEiB,WAAW,CAACzC,IADH;YAEZyB,CAAC,EAAEgB,WAAW,CAAC1C,GAFH;YAGZJ,KAAK,EAAEoB,MAAM,CAACuB,WAHF;YAIZxC,MAAM,EAAEiB,MAAM,CAACwB,YAJH;YAKZb,IAAI,EAAEX;WALP;UAOA,MAAI,CAACtB,KAAL,CAAW+C,SAAX,IAAwB,MAAI,CAAC/C,KAAL,CAAW+C,SAAX,CAAqB1B,CAArB,EAAwBS,MAAxB,CAAxB;UACAmB,QAAQ,CAACC,mBAAT,CAA6B,WAA7B,EAA0CR,MAA1C;UACAO,QAAQ,CAACC,mBAAT,CAA6B,SAA7B,EAAwCH,SAAxC;UACA,MAAI,CAACvC,QAAL,GAAgB,KAAhB;;OAhBF;;MAoBAyC,QAAQ,CAACE,gBAAT,CAA0B,WAA1B,EAAuCT,MAAvC;MACAO,QAAQ,CAACE,gBAAT,CAA0B,SAA1B,EAAqCJ,SAArC;;;;oCAGe1B,GAAG;UACd,CAACA,CAAC,CAAC+B,QAAH,IAAe,CAAC/B,CAAC,CAACgC,OAAlB,IAA6BhC,CAAC,CAACiC,GAAF,KAAU,YAA3C,EAAyD;aACnDrC,QAAL,CAAc;UACbV,IAAI,EAAE,KAAKN,KAAL,CAAWM,IAAX,GAAkB;SADzB;OADD,MAIO,IAAIc,CAAC,CAAC+B,QAAF,IAAc,CAAC/B,CAAC,CAACgC,OAAjB,IAA4BhC,CAAC,CAACiC,GAAF,KAAU,YAA1C,EAAwD;aACzDrC,QAAL,CAAc;UACbV,IAAI,EAAE,KAAKN,KAAL,CAAWM,IAAX,GAAkB;SADzB;OADM,MAIA,IAAI,CAACc,CAAC,CAAC+B,QAAH,IAAe,CAAC/B,CAAC,CAACgC,OAAlB,IAA6BhC,CAAC,CAACiC,GAAF,KAAU,WAA3C,EAAwD;aACzDrC,QAAL,CAAc;UACbV,IAAI,EAAE,KAAKN,KAAL,CAAWM,IAAX,GAAkB;SADzB;OADM,MAIA,IAAIc,CAAC,CAAC+B,QAAF,IAAc,CAAC/B,CAAC,CAACgC,OAAjB,IAA4BhC,CAAC,CAACiC,GAAF,KAAU,WAA1C,EAAuD;aACxDrC,QAAL,CAAc;UACbV,IAAI,EAAE,KAAKN,KAAL,CAAWM,IAAX,GAAkB;SADzB;OADM,MAIA,IAAI,CAACc,CAAC,CAAC+B,QAAH,IAAe,CAAC/B,CAAC,CAACgC,OAAlB,IAA6BhC,CAAC,CAACiC,GAAF,KAAU,SAA3C,EAAsD;aACvDrC,QAAL,CAAc;UACbX,GAAG,EAAE,KAAKL,KAAL,CAAWK,GAAX,GAAiB;SADvB;OADM,MAIA,IAAIe,CAAC,CAAC+B,QAAF,IAAc,CAAC/B,CAAC,CAACgC,OAAjB,IAA4BhC,CAAC,CAACiC,GAAF,KAAU,SAA1C,EAAqD;aACtDrC,QAAL,CAAc;UACbX,GAAG,EAAE,KAAKL,KAAL,CAAWK,GAAX,GAAiB;SADvB;OADM,MAIA,IAAI,CAACe,CAAC,CAAC+B,QAAH,IAAe,CAAC/B,CAAC,CAACgC,OAAlB,IAA6BhC,CAAC,CAACiC,GAAF,KAAU,WAA3C,EAAwD;aACzDrC,QAAL,CAAc;UACbX,GAAG,EAAE,KAAKL,KAAL,CAAWK,GAAX,GAAiB;SADvB;OADM,MAIA,IAAIe,CAAC,CAAC+B,QAAF,IAAc,CAAC/B,CAAC,CAACgC,OAAjB,IAA4BhC,CAAC,CAACiC,GAAF,KAAU,WAA1C,EAAuD;aACxDrC,QAAL,CAAc;UACbX,GAAG,EAAE,KAAKL,KAAL,CAAWK,GAAX,GAAiB;SADvB;OADM,MAIA,IAAIe,CAAC,CAACgC,OAAF,IAAa,CAAChC,CAAC,CAAC+B,QAAhB,IAA4B/B,CAAC,CAACiC,GAAF,KAAU,YAA1C,EAAwD;aACzDrC,QAAL,CAAc;UACbf,KAAK,EAAE,KAAKD,KAAL,CAAWC,KAAX,GAAmB;SAD3B;OADM,MAIA,IAAImB,CAAC,CAACgC,OAAF,IAAahC,CAAC,CAAC+B,QAAf,IAA2B/B,CAAC,CAACiC,GAAF,KAAU,YAAzC,EAAuD;aACxDrC,QAAL,CAAc;UACbf,KAAK,EAAE,KAAKD,KAAL,CAAWC,KAAX,GAAmB;SAD3B;OADM,MAIA,IAAImB,CAAC,CAACgC,OAAF,IAAa,CAAChC,CAAC,CAAC+B,QAAhB,IAA4B/B,CAAC,CAACiC,GAAF,KAAU,WAA1C,EAAuD;aACxDrC,QAAL,CAAc;UACbf,KAAK,EAAE,KAAKD,KAAL,CAAWC,KAAX,GAAmB;SAD3B;OADM,MAIA,IAAImB,CAAC,CAACgC,OAAF,IAAahC,CAAC,CAAC+B,QAAf,IAA2B/B,CAAC,CAACiC,GAAF,KAAU,WAAzC,EAAsD;aACvDrC,QAAL,CAAc;UACbf,KAAK,EAAE,KAAKD,KAAL,CAAWC,KAAX,GAAmB;SAD3B;OADM,MAIA,IAAImB,CAAC,CAACgC,OAAF,IAAa,CAAChC,CAAC,CAAC+B,QAAhB,IAA4B/B,CAAC,CAACiC,GAAF,KAAU,WAA1C,EAAuD;aACxDrC,QAAL,CAAc;UACbZ,MAAM,EAAE,KAAKJ,KAAL,CAAWI,MAAX,GAAoB;SAD7B;OADM,MAIA,IAAIgB,CAAC,CAACgC,OAAF,IAAahC,CAAC,CAAC+B,QAAf,IAA2B/B,CAAC,CAACiC,GAAF,KAAU,WAAzC,EAAsD;aACvDrC,QAAL,CAAc;UACbZ,MAAM,EAAE,KAAKJ,KAAL,CAAWI,MAAX,GAAoB;SAD7B;OADM,MAIA,IAAIgB,CAAC,CAACgC,OAAF,IAAa,CAAChC,CAAC,CAAC+B,QAAhB,IAA4B/B,CAAC,CAACiC,GAAF,KAAU,SAA1C,EAAqD;aACtDrC,QAAL,CAAc;UACbZ,MAAM,EAAE,KAAKJ,KAAL,CAAWI,MAAX,GAAoB;SAD7B;OADM,MAIA,IAAIgB,CAAC,CAACgC,OAAF,IAAahC,CAAC,CAAC+B,QAAf,IAA2B/B,CAAC,CAACiC,GAAF,KAAU,SAAzC,EAAoD;aACrDrC,QAAL,CAAc;UACbZ,MAAM,EAAE,KAAKJ,KAAL,CAAWI,MAAX,GAAoB;SAD7B;;;;;kCAMYgB,GAAG;;;UACRC,MADQ,GACGD,CADH,CACRC,MADQ;UAEVE,WAAW,GAAG,KAAKxB,KAAL,CAAWyB,qBAAX,EAApB;UACM8B,kBAAkB,GAAG,KAAK7C,GAAL,CAASa,OAAT,CAAiBI,qBAAjB,GAAyCC,MAAzC,EAA3B;UACMC,mBAAmB,GAAGL,WAAW,CAACD,OAAZ,CAAoBI,qBAApB,GAA4CC,MAA5C,EAA5B;UACME,IAAI,GAAG;QACZ5B,KAAK,EAAEqD,kBAAkB,CAACrD,KADd;QAEZG,MAAM,EAAEkD,kBAAkB,CAAClD,MAFf;QAGZ0B,CAAC,EAAEwB,kBAAkB,CAAChD,IAAnB,GAA0BsB,mBAAmB,CAACE,CAHrC;QAIZC,CAAC,EAAEuB,kBAAkB,CAACjD,GAAnB,GAAyBuB,mBAAmB,CAACG,CAJpC;QAKZC,IAAI,EAAE,KAAKvB,GAAL,CAASa;OALhB;WAOKvB,KAAL,CAAWgB,aAAX,IAA4B,KAAKhB,KAAL,CAAWgB,aAAX,CAAyBK,CAAzB,EAA4BS,IAA5B,CAA5B;WACKrB,QAAL,GAAgB,IAAhB;;UAEM+C,QAAQ,GAAG,SAAXA,QAAW,CAACnC,CAAD,EAAO;YACnB,MAAI,CAACZ,QAAT,EAAmB;UAClBY,CAAC,CAACsB,wBAAF;;cACIrB,MAAM,CAACmC,EAAP,KAAc,IAAlB,EAAwB;gBACjBC,iBAAiB,GAAG;cACzBxD,KAAK,EAAEmB,CAAC,CAACiB,OAAF,GAAYiB,kBAAkB,CAAChD,IADb;cAEzBF,MAAM,EAAEgB,CAAC,CAACoB,OAAF,GAAYc,kBAAkB,CAACjD;aAFxC;gBAKMwB,MAAI,GAAG;cACZ5B,KAAK,EAAEwD,iBAAiB,CAACxD,KADb;cAEZG,MAAM,EAAEqD,iBAAiB,CAACrD,MAFd;cAGZ0B,CAAC,EAAEwB,kBAAkB,CAAChD,IAAnB,GAA0BsB,mBAAmB,CAACE,CAHrC;cAIZC,CAAC,EAAEuB,kBAAkB,CAACjD,GAAnB,GAAyBuB,mBAAmB,CAACG,CAJpC;cAKZC,IAAI,EAAE,MAAI,CAACvB,GAAL,CAASa;aALhB;YAOA,MAAI,CAACvB,KAAL,CAAWwD,QAAX,IAAuB,MAAI,CAACxD,KAAL,CAAWwD,QAAX,CAAoBnC,CAApB,EAAuBS,MAAvB,CAAvB;;YACA,MAAI,CAACb,QAAL,CAAc;cACbf,KAAK,EAAEwD,iBAAiB,CAACxD,KADZ;cAEbG,MAAM,EAAEqD,iBAAiB,CAACrD;aAF3B;WAdD,MAkBO,IAAIiB,MAAM,CAACmC,EAAP,KAAc,IAAlB,EAAwB;gBACxBvB,MAAM,GAAGqB,kBAAkB,CAAChD,IAAnB,GAA0Bc,CAAC,CAACiB,OAA3C;gBACMC,MAAM,GAAGgB,kBAAkB,CAACjD,GAAnB,GAAyBiD,kBAAkB,CAAClD,MAA5C,GAAqDgB,CAAC,CAACoB,OAAtE;gBACMiB,kBAAiB,GAAG;cACzBxD,KAAK,EAAEqD,kBAAkB,CAACrD,KAAnB,GAA2BgC,MADT;cAEzB7B,MAAM,EAAEkD,kBAAkB,CAAClD,MAAnB,GAA4BkC;aAFrC;gBAKMK,eAAe,GAAG;cACvBtC,GAAG,EAAEiD,kBAAkB,CAACjD,GADD;cAEvBC,IAAI,EAAEgD,kBAAkB,CAAChD,IAAnB,GAA0B2B;aAFjC;gBAKMJ,MAAI,GAAG;cACZ5B,KAAK,EAAEwD,kBAAiB,CAACxD,KADb;cAEZG,MAAM,EAAEqD,kBAAiB,CAACrD,MAFd;cAGZ0B,CAAC,EAAEa,eAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE,CAHlC;cAIZC,CAAC,EAAEY,eAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAJjC;cAKZC,IAAI,EAAE,MAAI,CAACvB,GAAL,CAASa;aALhB;YAOA,MAAI,CAACvB,KAAL,CAAWwD,QAAX,IAAuB,MAAI,CAACxD,KAAL,CAAWwD,QAAX,CAAoBnC,CAApB,EAAuBS,MAAvB,CAAvB;;YACA,MAAI,CAACb,QAAL,CAAc;cACbf,KAAK,EAAEwD,kBAAiB,CAACxD,KADZ;cAEbG,MAAM,EAAEqD,kBAAiB,CAACrD,MAFb;cAGbC,GAAG,EAAEsC,eAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAHlC;cAIbzB,IAAI,EAAEqC,eAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE;aAJlD;WArBM,MA2BA,IAAIT,MAAM,CAACmC,EAAP,KAAc,IAAlB,EAAwB;gBACxBvB,OAAM,GAAGb,CAAC,CAACiB,OAAF,GAAYiB,kBAAkB,CAAChD,IAA9C;;gBACMgC,OAAM,GAAGgB,kBAAkB,CAACjD,GAAnB,GAAyBe,CAAC,CAACoB,OAA1C;;gBACMiB,mBAAiB,GAAG;cACzBxD,KAAK,EAAEgC,OADkB;cAEzB7B,MAAM,EAAEkD,kBAAkB,CAAClD,MAAnB,GAA4BkC;aAFrC;gBAKMK,gBAAe,GAAG;cACvBtC,GAAG,EAAEiD,kBAAkB,CAACjD,GAAnB,GAAyBiC,OADP;cAEvBhC,IAAI,EAAEgD,kBAAkB,CAAChD;aAF1B;gBAKMuB,MAAI,GAAG;cACZ5B,KAAK,EAAEwD,mBAAiB,CAACxD,KADb;cAEZG,MAAM,EAAEqD,mBAAiB,CAACrD,MAFd;cAGZ0B,CAAC,EAAEa,gBAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE,CAHlC;cAIZC,CAAC,EAAEY,gBAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAJjC;cAKZC,IAAI,EAAE,MAAI,CAACvB,GAAL,CAASa;aALhB;YAOA,MAAI,CAACvB,KAAL,CAAWwD,QAAX,IAAuB,MAAI,CAACxD,KAAL,CAAWwD,QAAX,CAAoBnC,CAApB,EAAuBS,MAAvB,CAAvB;;YACA,MAAI,CAACb,QAAL,CAAc;cACbf,KAAK,EAAEwD,mBAAiB,CAACxD,KADZ;cAEbG,MAAM,EAAEqD,mBAAiB,CAACrD,MAFb;cAGbC,GAAG,EAAEsC,gBAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAHlC;cAIbzB,IAAI,EAAEqC,gBAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE;aAJlD;WArBM,MA2BA,IAAIT,MAAM,CAACmC,EAAP,KAAc,IAAlB,EAAwB;gBACxBvB,QAAM,GAAGqB,kBAAkB,CAAChD,IAAnB,GAA0Bc,CAAC,CAACiB,OAA3C;;gBACMC,QAAM,GAAGgB,kBAAkB,CAACjD,GAAnB,GAAyBe,CAAC,CAACoB,OAA1C;;gBACMiB,mBAAiB,GAAG;cACzBxD,KAAK,EAAEqD,kBAAkB,CAACrD,KAAnB,GAA2BgC,QADT;cAEzB7B,MAAM,EAAEkD,kBAAkB,CAAClD,MAAnB,GAA4BkC;aAFrC;gBAKMK,iBAAe,GAAG;cACvBtC,GAAG,EAAEiD,kBAAkB,CAACjD,GAAnB,GAAyBiC,QADP;cAEvBhC,IAAI,EAAEgD,kBAAkB,CAAChD,IAAnB,GAA0B2B;aAFjC;gBAIMJ,MAAI,GAAG;cACZ5B,KAAK,EAAEwD,mBAAiB,CAACxD,KADb;cAEZG,MAAM,EAAEqD,mBAAiB,CAACrD,MAFd;cAGZ0B,CAAC,EAAEa,iBAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE,CAHlC;cAIZC,CAAC,EAAEY,iBAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAJjC;cAKZC,IAAI,EAAE,MAAI,CAACvB,GAAL,CAASa;aALhB;YAOA,MAAI,CAACvB,KAAL,CAAWwD,QAAX,IAAuB,MAAI,CAACxD,KAAL,CAAWwD,QAAX,CAAoBnC,CAApB,EAAuBS,MAAvB,CAAvB;;YACA,MAAI,CAACb,QAAL,CAAc;cACbf,KAAK,EAAEwD,mBAAiB,CAACxD,KADZ;cAEbG,MAAM,EAAEqD,mBAAiB,CAACrD,MAFb;cAGbC,GAAG,EAAEsC,iBAAe,CAACtC,GAAhB,GAAsBuB,mBAAmB,CAACG,CAHlC;cAIbzB,IAAI,EAAEqC,iBAAe,CAACrC,IAAhB,GAAuBsB,mBAAmB,CAACE;aAJlD;;;OA/FH;;UAyGM4B,WAAW,GAAG,SAAdA,WAAc,CAACtC,CAAD,EAAO;YACtB,MAAI,CAACZ,QAAT,EAAmB;UAClBwC,QAAQ,CAACC,mBAAT,CAA6B,WAA7B,EAA0CM,QAA1C;UACAP,QAAQ,CAACC,mBAAT,CAA6B,SAA7B,EAAwCS,WAAxC;;cAEMC,UAAU,GAAG,MAAI,CAAClD,GAAL,CAASa,OAAT,CAAiBI,qBAAjB,GAAyCC,MAAzC,EAAnB;;cACME,MAAI,GAAG;YACZ5B,KAAK,EAAE0D,UAAU,CAAC1D,KADN;YAEZG,MAAM,EAAEuD,UAAU,CAACvD,MAFP;YAGZ2B,CAAC,EAAE4B,UAAU,CAACtD,GAAX,GAAiBuB,mBAAmB,CAACG,CAH5B;YAIZD,CAAC,EAAE6B,UAAU,CAACrD,IAAX,GAAkBsB,mBAAmB,CAACE,CAJ7B;YAKZE,IAAI,EAAE,MAAI,CAACvB,GAAL,CAASa;WALhB;UAOA,MAAI,CAACvB,KAAL,CAAW2D,WAAX,IAA0B,MAAI,CAAC3D,KAAL,CAAW2D,WAAX,CAAuBtC,CAAvB,EAA0BS,MAA1B,CAA1B;UACA,MAAI,CAACrB,QAAL,GAAgB,KAAhB;;OAdF;;MAkBAwC,QAAQ,CAACE,gBAAT,CAA0B,WAA1B,EAAuCK,QAAvC;MACAP,QAAQ,CAACE,gBAAT,CAA0B,SAA1B,EAAqCQ,WAArC;;;;6BAGQ;;;wBAC6B,KAAK3D,KADlC;UACA6D,QADA,eACAA,QADA;UACUJ,EADV,eACUA,EADV;UACcK,UADd,eACcA,UADd;UAEFC,aAAa,GAAGD,UAAU,aAAME,MAAM,CAACtD,GAAb,cAAoBsD,MAAM,CAACC,QAA3B,IAAwCD,MAAM,CAACtD,GAA/E;;UACMwD,SAAS,qBACXL,QADW;QAEd3D,KAAK,YAAK,KAAKD,KAAL,CAAWC,KAAhB,OAFS;QAGdG,MAAM,YAAK,KAAKJ,KAAL,CAAWI,MAAhB,OAHQ;QAIdC,GAAG,YAAK,KAAKL,KAAL,CAAWK,GAAhB,OAJW;QAKdC,IAAI,YAAK,KAAKN,KAAL,CAAWM,IAAhB;QALL;;aAQO;QACN,SAAS,EAAEwD,aADL;QAEN,EAAE,EAAEN,EAFE;QAGN,SAAS,EAAE,KAAKzD,KAAL,CAAWmE,SAHhB;QAIN,WAAW,EAAE,KAAKtD,WAJZ;QAKN,OAAO,EAAE,KAAKE,eALR;QAMN,SAAS,EAAE,KAAKA,eANV;QAON,GAAG,EAAE,KAAKL,GAPJ;QAQN,KAAK,EAAEwD,SARD;QASN,QAAQ,EAAC;SAGRJ,UAAU,GACThE,cAAc,CAACsE,GAAf,CAAmB,UAAAC,MAAM,EAAI;YACtBC,SAAS,aAAMN,MAAM,CAACO,YAAb,cAA6BP,MAAM,kBAAWK,MAAX,EAAnC,CAAf;eACO;UAAK,GAAG,EAAEA,MAAV;UAAkB,SAAS,EAAEC,SAA7B;UAAwC,WAAW,EAAE,MAAI,CAACtD,aAA1D;UAAyE,EAAE,EAAEqD;UAApF;OAFD,CADS,GAKT,IAjBI,CAAP;;;;;EAtUgBG;;AA6VlBzE,GAAG,CAAC0E,SAAJ,GAAgB;EACfrE,eAAe,EAAEsE,SAAS,CAACC,MAAV,CAAiBC,UADnB;EAEfC,IAAI,EAAEH,SAAS,CAACI,IAFD;EAGfrD,qBAAqB,EAAEiD,SAAS,CAACK,IAHlB;EAIftB,EAAE,EAAEiB,SAAS,CAACM,MAJC;EAKflB,UAAU,EAAEY,SAAS,CAACI,IALP;EAMfG,WAAW,EAAEP,SAAS,CAACI,IANR;EAOfI,aAAa,EAAER,SAAS,CAACK,IAPV;EAQfI,QAAQ,EAAET,SAAS,CAACK,IARL;EASfK,WAAW,EAAEV,SAAS,CAACK,IATR;EAUf/D,aAAa,EAAE0D,SAAS,CAACK,IAVV;EAWfvB,QAAQ,EAAEkB,SAAS,CAACK,IAXL;EAYfpB,WAAW,EAAEe,SAAS,CAACK,IAZR;EAaflE,WAAW,EAAE6D,SAAS,CAACK,IAbR;EAcfrC,MAAM,EAAEgC,SAAS,CAACK,IAdH;EAefhC,SAAS,EAAE2B,SAAS,CAACK,IAfN;EAgBfM,MAAM,EAAEX,SAAS,CAACI,IAhBH;EAiBfQ,MAAM,EAAEZ,SAAS,CAACI;CAjBnB;;;;;;;;AClWA,AAAO,IAAMS,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAC3B,UAAD,EAAa4B,IAAb,EAAsB;MACxDA,IAAI,KAAK,GAAb,EAAkB;QACXC,KAAK,GAAG7B,UAAU,CAACrD,IAAzB;QACMmF,MAAM,GAAG9B,UAAU,CAACrD,IAAX,GAAkBoF,QAAQ,CAAC/B,UAAU,CAAC1D,KAAX,GAAmB,CAApB,EAAuB,EAAvB,CAAzC;QACM0F,GAAG,GAAGhC,UAAU,CAACrD,IAAX,GAAkBqD,UAAU,CAAC1D,KAAzC;WAEO,CAAEuF,KAAF,EAASC,MAAT,EAAiBE,GAAjB,CAAP;GALD,MAMO;QACAH,MAAK,GAAG7B,UAAU,CAACtD,GAAzB;;QACMoF,OAAM,GAAG9B,UAAU,CAACtD,GAAX,GAAiBqF,QAAQ,CAAC/B,UAAU,CAACvD,MAAX,GAAoB,CAArB,EAAwB,EAAxB,CAAxC;;QACMuF,IAAG,GAAGhC,UAAU,CAACtD,GAAX,GAAiBsD,UAAU,CAACvD,MAAxC;;WAEO,CAAEoF,MAAF,EAASC,OAAT,EAAiBE,IAAjB,CAAP;;CAZK;AAgBP,AAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAASC,SAAT,EAAuB;MACjDC,uBAAuB,GAAGD,SAAS,CAACD,MAAD,CAAT,CAAkB/D,CAAlD;MACMkE,uBAAuB,GAAGF,SAAS,CAACD,MAAD,CAAT,CAAkB9D,CAAlD;MAEMkE,cAAc,GAAGC,uCAAuC,CAACJ,SAAD,EAAYC,uBAAZ,EAAqC,GAArC,CAA9D;MACMI,cAAc,GAAGD,uCAAuC,CAACJ,SAAD,EAAYE,uBAAZ,EAAqC,GAArC,CAA9D;MACMI,kBAAkB,GAAGC,qBAAqB,CAACN,uBAAD,EAA0BE,cAA1B,CAAhD;MACMK,kBAAkB,GAAGD,qBAAqB,CAACL,uBAAD,EAA0BG,cAA1B,CAAhD;MAEMI,gBAAgB,GAAG,EAAzB;;MAEIH,kBAAkB,CAACI,SAAvB,EAAkC;IACjCD,gBAAgB,CAACzE,CAAjB,uBACIsE,kBADJ;MAECK,eAAe,EAAEV;;;;MAIfO,kBAAkB,CAACE,SAAvB,EAAkC;IACjCD,gBAAgB,CAACxE,CAAjB,uBACIuE,kBADJ;MAECG,eAAe,EAAET;;;;SAIZO,gBAAP;CAzBM;AA4BP,AAAO,IAAML,uCAAuC,GAAG,SAA1CA,uCAA0C,CAACJ,SAAD,EAAYY,gCAAZ,EAA8CnB,IAA9C,EAAuD;MACvGoB,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYf,SAAZ,EAAuB3B,GAAvB,CAA2B,UAAA1D,GAAG,EAAI;QAC1CqG,8BAA8B,GAAGhB,SAAS,CAACrF,GAAD,CAAT,CAAe8E,IAAf,CAAvC;;QACIuB,8BAA8B,KAAKJ,gCAAvC,EAAyE;aACjEI,8BAAP;;GAHa,CAAf;SAOOH,MAAM,CAACI,MAAP,CAAc,UAAAC,MAAM;WAAIA,MAAM,KAAKC,SAAf;GAApB,CAAP;CARM;AAWP,AAAO,IAAMZ,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACa,wBAAD,EAA2BC,uBAA3B,EAAuD;MACvFX,SAAS,GAAG,IAAhB;MACIY,YAAY,GAAG,IAAnB;MACIC,YAAY,GAAG,EAAnB;MACMC,aAAa,GAAG,CAAtB;;OACK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGJ,uBAAuB,CAACK,MAApD,EAA4DD,KAAK,IAAI,CAArE,EAAwE;QACnEE,MAAM,GAAG,CAAb;QACIC,MAAM,GAAG,CAAb;;WAEOD,MAAM,GAAGP,wBAAwB,CAACM,MAAlC,IAA4CE,MAAM,GAAGP,uBAAuB,CAACI,KAAD,CAAvB,CAA+BC,MAA3F,EAAmG;UAC5FG,IAAI,GAAGzF,IAAI,CAACC,GAAL,CAAS+E,wBAAwB,CAACO,MAAD,CAAxB,GAAmCN,uBAAuB,CAACI,KAAD,CAAvB,CAA+BG,MAA/B,CAA5C,CAAb;;UACIC,IAAI,IAAIL,aAAZ,EAA2B;QAC1Bd,SAAS,GAAG;UAAEoB,KAAK,EAAED,IAAT;UAAeE,cAAc,EAAEJ,MAA/B;UAAuCK,eAAe,EAAEJ;SAApE;QACAL,YAAY,GAAGF,uBAAuB,CAACI,KAAD,CAAtC;QACAH,YAAY,GAAGD,uBAAuB,CAACI,KAAD,CAAvB,CAA+BG,MAA/B,CAAf;;;UAGGR,wBAAwB,CAACO,MAAD,CAAxB,GAAmCN,uBAAuB,CAACI,KAAD,CAAvB,CAA+BG,MAA/B,CAAvC,EAA+E;QAC9ED,MAAM,IAAI,CAAV;OADD,MAEO;QACNC,MAAM,IAAI,CAAV;;;;;SAKI;IAAEL,YAAY,EAAZA,YAAF;IAAgBb,SAAS,EAATA,SAAhB;IAA2BY,YAAY,EAAZA;GAAlC;CAzBM;;;;;;;;;;;;;;;;;;;;;;;;ICjDDW;;;;;2BACOhI,KAAZ,EAAmB;;;;;6FACZA,KAAN;UACKwB,WAAL,GAAmBb,KAAK,CAACC,SAAN,EAAnB;UACKX,KAAL,GAAa;MACZ6F,MAAM,EAAE,EADI;MAEZtE,WAAW,EAAE,IAFD;MAGZyG,KAAK,EAAE,EAHK;MAIZhB,MAAM,EAAE,EAJI;MAKZiB,YAAY,EAAE,KALF;MAMZC,KAAK,EAAE;KANR;UAQK1G,qBAAL,GAA6B,MAAKA,qBAAL,CAA2BX,IAA3B,iCAA7B;UACKsH,aAAL,GAAqB,MAAKA,aAAL,CAAmBtH,IAAnB,iCAArB;UACKqD,SAAL,GAAiB,MAAKA,SAAL,CAAerD,IAAf,iCAAjB;UACKuH,WAAL,GAAmB,MAAKA,WAAL,CAAiBvH,IAAjB,iCAAnB;UACKwH,gBAAL,GAAwB,MAAKA,gBAAL,CAAsBxH,IAAtB,iCAAxB;UACKyH,gBAAL,GAAwB,MAAKA,gBAAL,CAAsBzH,IAAtB,iCAAxB;;;;;;;wCAImB;;UAEf,KAAKU,WAAL,CAAiBD,OAAjB,IAA4B,KAAKtB,KAAL,CAAWuB,WAAX,KAA2B,IAA3D,EAAiE;YAC1DA,WAAW,GAAG,KAAKA,WAAL,CAAiBD,OAAjB,CAAyBI,qBAAzB,GAAiDC,MAAjD,EAApB;YACMqG,KAAK,GAAG,EAAd;YACMhB,MAAM,GAAG,EAAf,CAHgE;;QAMhEA,MAAM,CAACzF,WAAP,GAAqB;UACpBO,CAAC,EAAEwD,uBAAuB,CAAC/D,WAAD,EAAc,GAAd,CAAvB,CAA0C4C,GAA1C,CAA8C,UAAAyD,KAAK;mBAAIA,KAAK,GAAGrG,WAAW,CAACjB,IAAxB;WAAnD,CADiB;UAEpByB,CAAC,EAAEuD,uBAAuB,CAAC/D,WAAD,EAAc,GAAd,CAAvB,CAA0C4C,GAA1C,CAA8C,UAAAyD,KAAK;mBAAIA,KAAK,GAAGrG,WAAW,CAAClB,GAAxB;WAAnD;SAFJ;aAKKN,KAAL,CAAWiI,KAAX,CAAiBO,OAAjB,CAAyB,UAAC5E,UAAD,EAAa4D,KAAb,EAAuB;UAC/CS,KAAK,cAAOT,KAAP,EAAL,GAAuB5D,UAAvB;UACAqD,MAAM,cAAOO,KAAP,EAAN,GAAwB;YACvBzF,CAAC,EAAEwD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb,CADH;YAEvB5B,CAAC,EAAEuD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb;WAF3B;SAFD;aAQK3C,QAAL,CAAc;UACbO,WAAW,EAAXA,WADa;UAEbyG,KAAK,EAALA,KAFa;UAGbhB,MAAM,EAANA;SAHD;;;;;wCAQkB/F,WAAWC,WAAWC,aAAa;;UAElD,KAAKI,WAAL,CAAiBD,OAAjB,IAA4B,KAAKtB,KAAL,CAAWuB,WAAX,KAA2B,IAA3D,EAAiE;YAC1DA,WAAW,GAAG,KAAKA,WAAL,CAAiBD,OAAjB,CAAyBI,qBAAzB,GAAiDC,MAAjD,EAApB;YACMqG,KAAK,GAAG,EAAd;YACMhB,MAAM,GAAG,EAAf,CAHgE;;QAMhEA,MAAM,CAACzF,WAAP,GAAqB;UACpBO,CAAC,EAAEwD,uBAAuB,CAAC/D,WAAD,EAAc,GAAd,CAAvB,CAA0C4C,GAA1C,CAA8C,UAAAyD,KAAK;mBAAIA,KAAK,GAAGrG,WAAW,CAACjB,IAAxB;WAAnD,CADiB;UAEpByB,CAAC,EAAEuD,uBAAuB,CAAC/D,WAAD,EAAc,GAAd,CAAvB,CAA0C4C,GAA1C,CAA8C,UAAAyD,KAAK;mBAAIA,KAAK,GAAGrG,WAAW,CAAClB,GAAxB;WAAnD;SAFJ;aAKKN,KAAL,CAAWiI,KAAX,CAAiBO,OAAjB,CAAyB,UAAC5E,UAAD,EAAa4D,KAAb,EAAuB;UAC/CS,KAAK,cAAOT,KAAP,EAAL,GAAuB5D,UAAvB;UACAqD,MAAM,cAAOO,KAAP,EAAN,GAAwB;YACvBzF,CAAC,EAAEwD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb,CADH;YAEvB5B,CAAC,EAAEuD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb;WAF3B;SAFD;aAQK3C,QAAL,CAAc;UACbO,WAAW,EAAXA,WADa;UAEbyG,KAAK,EAALA,KAFa;UAGbhB,MAAM,EAANA;SAHD;;;;;4CAQsB;aAChB,KAAKzF,WAAZ;;;;kCAGaH,GAAGS,MAAM;;;UAChB8B,UAAU,GAAGiD,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgI,KAAX,CAAiBnG,IAAI,CAACG,IAAL,CAAUwB,EAA3B,CAAlB,EAAkD;QACpElD,IAAI,EAAEuB,IAAI,CAACC,CADyD;QAEpEzB,GAAG,EAAEwB,IAAI,CAACE;OAFQ,CAAnB;WAIKhC,KAAL,CAAW0C,MAAX,IAAqB,KAAK1C,KAAL,CAAW0C,MAAX,CAAkBrB,CAAlB,EAAqBS,IAArB,CAArB;WACKb,QAAL,CAAc;QACb6E,MAAM,EAAEhE,IAAI,CAACG,IAAL,CAAUwB,EADL;QAEbyE,YAAY,EAAE,IAFD;QAGbD,KAAK,EAAEpB,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgI,KAA7B,wBACLnG,IAAI,CAACG,IAAL,CAAUwB,EADL,EACUoD,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgI,KAAX,CAAiBnG,IAAI,CAACG,IAAL,CAAUwB,EAA3B,CAAlB,EAAkD;UACjElD,IAAI,EAAEuB,IAAI,CAACC,CADsD;UAEjEzB,GAAG,EAAEwB,IAAI,CAACE;SAFK,CADV,EAHM;QASbiF,MAAM,EAAEJ,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgH,MAA7B,wBACNnF,IAAI,CAACG,IAAL,CAAUwB,EADJ,EACSoD,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgH,MAAX,CAAkBnF,IAAI,CAACG,IAAL,CAAUwB,EAA5B,CAAlB,EAAmD;UAClE1B,CAAC,EAAEwD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb,CADwC;UAElE5B,CAAC,EAAEuD,uBAAuB,CAAC3B,UAAD,EAAa,GAAb;SAFX,CADT;OATT,EAeG,YAAM;YACFuE,KAAK,GAAGtC,iBAAiB,CAAC,MAAI,CAAC5F,KAAL,CAAW6F,MAAZ,EAAoB,MAAI,CAAC7F,KAAL,CAAWgH,MAA/B,CAA/B;YACIyB,gBAAgB,GAAG,MAAI,CAACzI,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCvF,IAA3D;YACIoI,eAAe,GAAG,MAAI,CAAC1I,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCxF,GAA1D;;aACK,IAAIkF,IAAT,IAAiB2C,KAAjB,EAAwB;4BAC8BA,KAAK,CAAC3C,IAAD,CADnC;cACfkB,eADe,eACfA,eADe;cACEY,YADF,eACEA,YADF;cACgBb,SADhB,eACgBA,SADhB;cAEjBmC,uBAAuB,GAAGnC,SAAS,CAACqB,cAA1C;cACMe,wBAAwB,GAAGpC,SAAS,CAACsB,eAA3C;;cAEIvC,IAAI,KAAK,GAAb,EAAkB;gBACbkB,eAAe,CAACkC,uBAAD,CAAf,GAA2CtB,YAAY,CAACuB,wBAAD,CAA3D,EAAuF;cACtFH,gBAAgB,GAAG,MAAI,CAACzI,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCvF,IAApC,GAA2CkG,SAAS,CAACoB,KAAxE;aADD,MAEO;cACNa,gBAAgB,GAAG,MAAI,CAACzI,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCvF,IAApC,GAA2CkG,SAAS,CAACoB,KAAxE;;WAJF,MAMO;gBACFnB,eAAe,CAACkC,uBAAD,CAAf,GAA2CtB,YAAY,CAACuB,wBAAD,CAA3D,EAAuF;cACtFF,eAAe,GAAG,MAAI,CAAC1I,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCxF,GAApC,GAA0CmG,SAAS,CAACoB,KAAtE;aADD,MAEO;cACNc,eAAe,GAAG,MAAI,CAAC1I,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,EAAoCxF,GAApC,GAA0CmG,SAAS,CAACoB,KAAtE;;;;;YAIGI,KAAK,GAAGpB,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgI,KAA7B,wBACZ,MAAI,CAAChI,KAAL,CAAW6F,MADC,EACQe,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,CAAlB,EAAuD;UAC3EvF,IAAI,EAAEmI,gBADqE;UAE3EpI,GAAG,EAAEqI;SAFe,CADR,EAAd;YAMM1B,MAAM,GAAGJ,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgH,MAA7B,wBACb,MAAI,CAAChH,KAAL,CAAW6F,MADE,EACOe,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgH,MAAX,CAAkB,MAAI,CAAChH,KAAL,CAAW6F,MAA7B,CAAlB,EAAwD;UAC5E/D,CAAC,EAAEwD,uBAAuB,CAAC0C,KAAK,CAAC,MAAI,CAAChI,KAAL,CAAW6F,MAAZ,CAAN,EAA2B,GAA3B,CADkD;UAE5E9D,CAAC,EAAEuD,uBAAuB,CAAC0C,KAAK,CAAC,MAAI,CAAChI,KAAL,CAAW6F,MAAZ,CAAN,EAA2B,GAA3B;SAFN,CADP,EAAf;;QAMA,MAAI,CAAC7E,QAAL,CAAc;UACbgH,KAAK,EAALA,KADa;UAEbhB,MAAM,EAANA,MAFa;UAGbkB,KAAK,EAALA;SAHD;OAlDD;;;;8BA0DS9G,GAAG;UACRA,CAAC,CAACC,MAAF,CAASmC,EAAT,CAAYqF,OAAZ,CAAoB,KAApB,KAA8B,CAAlC,EAAqC;aAC/B7H,QAAL,CAAc;UACb6E,MAAM,EAAEzE,CAAC,CAACC,MAAF,CAASmC;SADlB;OADD,MAIO,IAAIpC,CAAC,CAACC,MAAF,CAASyH,UAAT,CAAoBtF,EAApB,CAAuBqF,OAAvB,CAA+B,KAA/B,KAAyC,CAA7C,EAAgD;aACjD7H,QAAL,CAAc;UACb6E,MAAM,EAAEzE,CAAC,CAACC,MAAF,CAASyH,UAAT,CAAoBtF;SAD7B;;;;;gCAMUpC,GAAG;UACVA,CAAC,CAACC,MAAF,CAASyH,UAAT,CAAoBtF,EAApB,CAAuBqF,OAAvB,CAA+B,KAA/B,MAA0C,CAAC,CAA/C,EAAkD;aAC5C7H,QAAL,CAAc;UACb6E,MAAM,EAAE;SADT;;;;;qCAMezE,GAAGS,MAAM;;;WACpBb,QAAL,CAAc;QACbgH,KAAK,EAAEpB,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgI,KAA7B,wBACL,KAAKhI,KAAL,CAAW6F,MADN,EACee,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,KAAKxI,KAAL,CAAWgI,KAAX,CAAiB,KAAKhI,KAAL,CAAW6F,MAA5B,CAAlB,EAAuD;UAC3E5F,KAAK,EAAE4B,IAAI,CAAC5B,KAD+D;UAE3EG,MAAM,EAAEyB,IAAI,CAACzB,MAF8D;UAG3EC,GAAG,EAAEwB,IAAI,CAACE,CAHiE;UAI3EzB,IAAI,EAAEuB,IAAI,CAACC;SAJS,CADf;OADR,EASG,YAAM;QACR,MAAI,CAACd,QAAL,CAAc;UACbgG,MAAM,EAAEJ,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgH,MAA7B,wBACN,MAAI,CAAChH,KAAL,CAAW6F,MADL,EACce,MAAM,CAAC4B,MAAP,CAAc,EAAd,EAAkB,MAAI,CAACxI,KAAL,CAAWgH,MAAX,CAAkB,MAAI,CAAChH,KAAL,CAAW6F,MAA7B,CAAlB,EAAwD;YAC5E/D,CAAC,EAAEwD,uBAAuB,CAAC,MAAI,CAACtF,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,CAAD,EAAsC,GAAtC,CADkD;YAE5E9D,CAAC,EAAEuD,uBAAuB,CAAC,MAAI,CAACtF,KAAL,CAAWgI,KAAX,CAAiB,MAAI,CAAChI,KAAL,CAAW6F,MAA5B,CAAD,EAAsC,GAAtC;WAFN,CADd;SADT,EAOG,YAAM;UACR,MAAI,CAAC9F,KAAL,CAAW2D,WAAX,IAA0B,MAAI,CAAC3D,KAAL,CAAW2D,WAAX,CAAuBtC,CAAvB,EAA0BS,IAA1B,CAA1B;SARD;OAVD;;;;qCAuBgBT,GAAGS,MAAM;;;WACpBb,QAAL,CAAc;QACbiH,YAAY,EAAE;OADf,EAEG,YAAM;QACR,MAAI,CAAClI,KAAL,CAAW+C,SAAX,IAAwB,MAAI,CAAC/C,KAAL,CAAW+C,SAAX,CAAqB1B,CAArB,EAAwBS,IAAxB,CAAxB;OAHD;;;;6BAOQ;;;wBAC0B,KAAK7B,KAD/B;UACA6F,MADA,eACAA,MADA;UACQmC,KADR,eACQA,KADR;UACehB,MADf,eACeA,MADf;;UAIF+B,cAAc,GAAGnC,MAAM,CAACC,IAAP,CAAYmB,KAAZ,EAAmB7D,GAAnB,CAAuB,UAAC1D,GAAD,EAAM8G,KAAN,EAAgB;YACvDrH,QAAQ,GAAG8H,KAAK,CAACvH,GAAD,CAAtB;YACM+C,EAAE,gBAAS+D,KAAT,CAAR;eAEO,oBAAC,GAAD,eACF,MAAI,CAACxH,KADH;UAEN,WAAW,EAAE,MAAI,CAACC,KAAL,CAAWuB,WAFlB;UAGN,eAAe,EAAErB,QAHX;UAIN,qBAAqB,EAAE,MAAI,CAACsB,qBAJtB;UAKN,EAAE,EAAEgC,EALE;UAMN,UAAU,EAAEqC,MAAM,KAAKrC,EANjB;UAON,GAAG,EAAEA,EAPC;UAQN,MAAM,EAAE,MAAI,CAAC2E,aARP;UASN,SAAS,EAAE,MAAI,CAACG,gBATV;UAUN,WAAW,EAAE,MAAI,CAACD,gBAVZ;UAWN,QAAQ,EAAEnI,QAXJ;UAYN,SAAS,EAAE,MAAI,CAACgE;WAZjB;OAJsB,CAAvB,CAJQ;;;;;;UA6BF8E,WAAW,GAAGpC,MAAM,CAACC,IAAP,CAAYG,MAAZ,EAAoBiC,MAApB,CAA2B,UAACtC,MAAD,EAASlG,GAAT,EAAiB;YACzDyI,eAAe,GAAG,MAAI,CAAClJ,KAAL,CAAWiI,YAAX,aAA6BlE,MAAM,CAACoF,KAApC,cAA6CpF,MAAM,CAACqF,KAApD,cAA6DrF,MAAM,CAAC8B,MAApE,cAAkF9B,MAAM,CAACoF,KAAzF,cAAkGpF,MAAM,CAACqF,KAAzG,CAAxB;YACMC,wBAAwB,GAAGrC,MAAM,CAACvG,GAAD,CAAN,CAAYqB,CAAZ,CAAcqC,GAAd,CAAkB,UAACjE,QAAD,EAAWqH,KAAX,EAAqB;cAEtE,MAAI,CAACvH,KAAL,CAAW6F,MAAX,IACA,MAAI,CAAC7F,KAAL,CAAW6F,MAAX,KAAsBpF,GADtB,IAEA,MAAI,CAACT,KAAL,CAAWkI,KAFX,IAGA,MAAI,CAAClI,KAAL,CAAWkI,KAAX,CAAiBpG,CAHjB,IAIA,MAAI,CAAC9B,KAAL,CAAWkI,KAAX,CAAiBpG,CAAjB,CAAmBsF,YAJnB,IAKA,MAAI,CAACpH,KAAL,CAAWkI,KAAX,CAAiBpG,CAAjB,CAAmBsF,YAAnB,KAAoClH,QANrC,EAOE;mBACM;cAAK,GAAG,YAAKA,QAAL,cAAiBqH,KAAjB,CAAR;cAAkC,SAAS,EAAE2B,eAA7C;cAA8D,KAAK,EAAE;gBAAE5I,IAAI,EAAEJ;;cAApF;WARD,MASO;mBACC,IAAP;;SAX+B,CAAjC;eAeOyG,MAAM,CAAC2C,MAAP,CAAcD,wBAAd,CAAP;OAjBmB,EAkBjB,EAlBiB,CAApB;UAoBME,WAAW,GAAG3C,MAAM,CAACC,IAAP,CAAYG,MAAZ,EAAoBiC,MAApB,CAA2B,UAACtC,MAAD,EAASlG,GAAT,EAAiB;YACzDyI,eAAe,GAAG,MAAI,CAAClJ,KAAL,CAAWiI,YAAX,aAA6BlE,MAAM,CAACoF,KAApC,cAA6CpF,MAAM,CAACyF,KAApD,cAA6DzF,MAAM,CAAC8B,MAApE,cAAkF9B,MAAM,CAACoF,KAAzF,cAAkGpF,MAAM,CAACyF,KAAzG,CAAxB;YACMC,wBAAwB,GAAGzC,MAAM,CAACvG,GAAD,CAAN,CAAYsB,CAAZ,CAAcoC,GAAd,CAAkB,UAACjE,QAAD,EAAWqH,KAAX,EAAqB;cAEtE,MAAI,CAACvH,KAAL,CAAW6F,MAAX,IACA,MAAI,CAAC7F,KAAL,CAAW6F,MAAX,KAAsBpF,GADtB,IAEA,MAAI,CAACT,KAAL,CAAWkI,KAFX,IAGA,MAAI,CAAClI,KAAL,CAAWkI,KAAX,CAAiBnG,CAHjB,IAIA,MAAI,CAAC/B,KAAL,CAAWkI,KAAX,CAAiBnG,CAAjB,CAAmBqF,YAJnB,IAKA,MAAI,CAACpH,KAAL,CAAWkI,KAAX,CAAiBnG,CAAjB,CAAmBqF,YAAnB,KAAoClH,QANrC,EAOE;mBACM;cAAK,GAAG,YAAKA,QAAL,cAAiBqH,KAAjB,CAAR;cAAkC,SAAS,EAAE2B,eAA7C;cAA8D,KAAK,EAAE;gBAAE7I,GAAG,EAAEH;;cAAnF;WARD,MASO;mBACC,IAAP;;SAX+B,CAAjC;eAeOyG,MAAM,CAAC2C,MAAP,CAAcG,wBAAd,CAAP;OAjBmB,EAkBjB,EAlBiB,CAApB;aAoBO;QAAK,GAAG,EAAE,KAAKlI,WAAf;QAA4B,SAAS,YAAKwC,MAAM,CAACxC,WAAZ,cAA2B,KAAKxB,KAAL,CAAWsE,SAAtC,CAArC;QAAwF,KAAK,EAAE,KAAKtE,KAAL,CAAW2J;SAC/GX,cADK,EAELC,WAFK,EAGLO,WAHK,CAAP;;;;;EA5Q4BI;;AAoR9B5B,eAAe,CAACvD,SAAhB,GAA4B;EAC3BwD,KAAK,EAAEvD,SAAS,CAACmF,KAAV,CAAgBjF,UADI;EAE3Bf,QAAQ,EAAEa,SAAS,CAACC,MAFO;EAG3BL,SAAS,EAAEI,SAAS,CAACM,MAHM;EAI3BH,IAAI,EAAEH,SAAS,CAACI,IAJW;EAK3BG,WAAW,EAAEP,SAAS,CAACI,IALI;EAM3BjE,WAAW,EAAE6D,SAAS,CAACK,IANI;EAO3BrC,MAAM,EAAEgC,SAAS,CAACK,IAPS;EAQ3BhC,SAAS,EAAE2B,SAAS,CAACK,IARM;EAS3B/D,aAAa,EAAE0D,SAAS,CAACK,IATE;EAU3BvB,QAAQ,EAAEkB,SAAS,CAACK,IAVO;EAW3BpB,WAAW,EAAEe,SAAS,CAACK,IAXI;EAY3BG,aAAa,EAAER,SAAS,CAACK,IAZE;EAa3BI,QAAQ,EAAET,SAAS,CAACK,IAbO;EAc3BK,WAAW,EAAEV,SAAS,CAACK,IAdI;EAe3BM,MAAM,EAAEX,SAAS,CAACI,IAfS;EAgB3BQ,MAAM,EAAEZ,SAAS,CAACI,IAhBS;EAiB3B6E,KAAK,EAAEjF,SAAS,CAACC;CAjBlB;;ACjRA;;;;;;"} \ No newline at end of file diff --git a/example/README.md b/example/README.md old mode 100644 new mode 100755 diff --git a/example/package.json b/example/package.json old mode 100644 new mode 100755 diff --git a/example/public/index.html b/example/public/index.html old mode 100644 new mode 100755 diff --git a/example/public/manifest.json b/example/public/manifest.json old mode 100644 new mode 100755 diff --git a/example/src/App.js b/example/src/App.js old mode 100644 new mode 100755 diff --git a/example/src/index.css b/example/src/index.css old mode 100644 new mode 100755 diff --git a/example/src/index.js b/example/src/index.js old mode 100644 new mode 100755 diff --git a/example/yarn.lock b/example/yarn.lock old mode 100644 new mode 100755 diff --git a/index.html b/index.html old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/rollup.config.js b/rollup.config.js old mode 100644 new mode 100755 diff --git a/src/AlignmentGuides.js b/src/AlignmentGuides.js old mode 100644 new mode 100755 index 1745a14f..1dc735c1 --- a/src/AlignmentGuides.js +++ b/src/AlignmentGuides.js @@ -285,18 +285,18 @@ AlignmentGuides.propTypes = { boxStyle: PropTypes.object, className: PropTypes.string, drag: PropTypes.bool, - resize: PropTypes.bool, - rotate: PropTypes.bool, keybindings: PropTypes.bool, - onRotateStart: PropTypes.func, - onRotate: PropTypes.func, - onRotateEnd: PropTypes.func, - onResizeStart: PropTypes.func, - onResize: PropTypes.func, - onResizeEnd: PropTypes.func, onDragStart: PropTypes.func, onDrag: PropTypes.func, onDragEnd: PropTypes.func, + onResizeStart: PropTypes.func, + onResize: PropTypes.func, + onResizeEnd: PropTypes.func, + onRotateStart: PropTypes.func, + onRotate: PropTypes.func, + onRotateEnd: PropTypes.func, + resize: PropTypes.bool, + rotate: PropTypes.bool, style: PropTypes.object }; diff --git a/src/Box.js b/src/Box.js old mode 100644 new mode 100755 index 5031343d..ba140ae1 --- a/src/Box.js +++ b/src/Box.js @@ -1,9 +1,9 @@ -import React, { Component } from 'react'; +import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { RESIZE_HANDLES } from './utils/constants'; import styles from './styles.scss'; -class Box extends Component { +class Box extends PureComponent { constructor(props) { super(props); this.state = { diff --git a/src/index.js b/src/index.js old mode 100644 new mode 100755 diff --git a/src/styles.scss b/src/styles.scss old mode 100644 new mode 100755 diff --git a/src/utils/constants.js b/src/utils/constants.js old mode 100644 new mode 100755 diff --git a/src/utils/helpers.js b/src/utils/helpers.js old mode 100644 new mode 100755 diff --git a/webpack.config.js b/webpack.config.js old mode 100644 new mode 100755 diff --git a/yarn.lock b/yarn.lock old mode 100644 new mode 100755