60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { value: true });
 | 
						|
 | 
						|
var core = require('@vueuse/core');
 | 
						|
 | 
						|
const isInContainer = (el, container) => {
 | 
						|
  if (!core.isClient || !el || !container)
 | 
						|
    return false;
 | 
						|
  const elRect = el.getBoundingClientRect();
 | 
						|
  let containerRect;
 | 
						|
  if (container instanceof Element) {
 | 
						|
    containerRect = container.getBoundingClientRect();
 | 
						|
  } else {
 | 
						|
    containerRect = {
 | 
						|
      top: 0,
 | 
						|
      right: window.innerWidth,
 | 
						|
      bottom: window.innerHeight,
 | 
						|
      left: 0
 | 
						|
    };
 | 
						|
  }
 | 
						|
  return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
 | 
						|
};
 | 
						|
const getOffsetTop = (el) => {
 | 
						|
  let offset = 0;
 | 
						|
  let parent = el;
 | 
						|
  while (parent) {
 | 
						|
    offset += parent.offsetTop;
 | 
						|
    parent = parent.offsetParent;
 | 
						|
  }
 | 
						|
  return offset;
 | 
						|
};
 | 
						|
const getOffsetTopDistance = (el, containerEl) => {
 | 
						|
  return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl));
 | 
						|
};
 | 
						|
const getClientXY = (event) => {
 | 
						|
  let clientX;
 | 
						|
  let clientY;
 | 
						|
  if (event.type === "touchend") {
 | 
						|
    clientY = event.changedTouches[0].clientY;
 | 
						|
    clientX = event.changedTouches[0].clientX;
 | 
						|
  } else if (event.type.startsWith("touch")) {
 | 
						|
    clientY = event.touches[0].clientY;
 | 
						|
    clientX = event.touches[0].clientX;
 | 
						|
  } else {
 | 
						|
    clientY = event.clientY;
 | 
						|
    clientX = event.clientX;
 | 
						|
  }
 | 
						|
  return {
 | 
						|
    clientX,
 | 
						|
    clientY
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
exports.getClientXY = getClientXY;
 | 
						|
exports.getOffsetTop = getOffsetTop;
 | 
						|
exports.getOffsetTopDistance = getOffsetTopDistance;
 | 
						|
exports.isInContainer = isInContainer;
 | 
						|
//# sourceMappingURL=position.js.map
 |