100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * interact.js 1.10.27
 | 
						|
 *
 | 
						|
 * Copyright (c) 2012-present Taye Adeyemi <dev@taye.me>
 | 
						|
 * Released under the MIT License.
 | 
						|
 * https://raw.github.com/taye/interact.js/main/LICENSE
 | 
						|
 */
 | 
						|
 | 
						|
import { parentNode, closest, getElementRect } from './domUtils.js';
 | 
						|
import extend from './extend.js';
 | 
						|
import is from './is.js';
 | 
						|
import './browser.js';
 | 
						|
import './domObjects.js';
 | 
						|
import './window.js';
 | 
						|
import './isWindow.js';
 | 
						|
function getStringOptionResult(value, target, element) {
 | 
						|
  if (value === 'parent') {
 | 
						|
    return parentNode(element);
 | 
						|
  }
 | 
						|
  if (value === 'self') {
 | 
						|
    return target.getRect(element);
 | 
						|
  }
 | 
						|
  return closest(element, value);
 | 
						|
}
 | 
						|
function resolveRectLike(value, target, element, functionArgs) {
 | 
						|
  let returnValue = value;
 | 
						|
  if (is.string(returnValue)) {
 | 
						|
    returnValue = getStringOptionResult(returnValue, target, element);
 | 
						|
  } else if (is.func(returnValue)) {
 | 
						|
    returnValue = returnValue(...functionArgs);
 | 
						|
  }
 | 
						|
  if (is.element(returnValue)) {
 | 
						|
    returnValue = getElementRect(returnValue);
 | 
						|
  }
 | 
						|
  return returnValue;
 | 
						|
}
 | 
						|
function toFullRect(rect) {
 | 
						|
  var _rect$width, _rect$height;
 | 
						|
  const {
 | 
						|
    top,
 | 
						|
    left,
 | 
						|
    bottom,
 | 
						|
    right
 | 
						|
  } = rect;
 | 
						|
  const width = (_rect$width = rect.width) != null ? _rect$width : rect.right - rect.left;
 | 
						|
  const height = (_rect$height = rect.height) != null ? _rect$height : rect.bottom - rect.top;
 | 
						|
  return {
 | 
						|
    top,
 | 
						|
    left,
 | 
						|
    bottom,
 | 
						|
    right,
 | 
						|
    width,
 | 
						|
    height
 | 
						|
  };
 | 
						|
}
 | 
						|
function rectToXY(rect) {
 | 
						|
  return rect && {
 | 
						|
    x: 'x' in rect ? rect.x : rect.left,
 | 
						|
    y: 'y' in rect ? rect.y : rect.top
 | 
						|
  };
 | 
						|
}
 | 
						|
function xywhToTlbr(rect) {
 | 
						|
  if (rect && !('left' in rect && 'top' in rect)) {
 | 
						|
    rect = extend({}, rect);
 | 
						|
    rect.left = rect.x || 0;
 | 
						|
    rect.top = rect.y || 0;
 | 
						|
    rect.right = rect.right || rect.left + rect.width;
 | 
						|
    rect.bottom = rect.bottom || rect.top + rect.height;
 | 
						|
  }
 | 
						|
  return rect;
 | 
						|
}
 | 
						|
function tlbrToXywh(rect) {
 | 
						|
  if (rect && !('x' in rect && 'y' in rect)) {
 | 
						|
    rect = extend({}, rect);
 | 
						|
    rect.x = rect.left || 0;
 | 
						|
    rect.y = rect.top || 0;
 | 
						|
    rect.width = rect.width || (rect.right || 0) - rect.x;
 | 
						|
    rect.height = rect.height || (rect.bottom || 0) - rect.y;
 | 
						|
  }
 | 
						|
  return rect;
 | 
						|
}
 | 
						|
function addEdges(edges, rect, delta) {
 | 
						|
  if (edges.left) {
 | 
						|
    rect.left += delta.x;
 | 
						|
  }
 | 
						|
  if (edges.right) {
 | 
						|
    rect.right += delta.x;
 | 
						|
  }
 | 
						|
  if (edges.top) {
 | 
						|
    rect.top += delta.y;
 | 
						|
  }
 | 
						|
  if (edges.bottom) {
 | 
						|
    rect.bottom += delta.y;
 | 
						|
  }
 | 
						|
  rect.width = rect.right - rect.left;
 | 
						|
  rect.height = rect.bottom - rect.top;
 | 
						|
}
 | 
						|
export { addEdges, getStringOptionResult, rectToXY, resolveRectLike, tlbrToXywh, toFullRect, xywhToTlbr };
 | 
						|
//# sourceMappingURL=rect.js.map
 |