'use strict';

function dataToArray(vars) {
  if (Array.isArray(vars))
    return vars;
  return [vars];
}
const transitionEndObject = {
  transition: "transitionend",
  WebkitTransition: "webkitTransitionEnd",
  MozTransition: "transitionend",
  OTransition: "oTransitionEnd otransitionend"
};
const transitionStr = Object.keys(transitionEndObject).filter((key) => {
  if (typeof document === "undefined")
    return false;
  const html = document.getElementsByTagName("html")[0];
  return key in (html ? html.style : {});
})[0];
const transitionEndFun = transitionEndObject[transitionStr];
function addEventListener(target, eventType, callback, options) {
  if (target.addEventListener)
    target.addEventListener(eventType, callback, options);
  else if (target.attachEvent)
    target.attachEvent(`on${eventType}`, callback);
}
function removeEventListener(target, eventType, callback, options) {
  if (target.removeEventListener)
    target.removeEventListener(eventType, callback, options);
  else if (target.attachEvent)
    target.detachEvent(`on${eventType}`, callback);
}
function transformArguments(arg, cb) {
  const result = typeof arg === "function" ? arg(cb) : arg;
  if (Array.isArray(result)) {
    if (result.length === 2)
      return result;
    return [result[0], result[1]];
  }
  return [result];
}
function isNumeric(value) {
  return !Number.isNaN(Number.parseFloat(value)) && Number.isFinite(value);
}
const windowIsUndefined = !(typeof window !== "undefined" && window.document && window.document.createElement);
function getTouchParentScroll(root, currentTarget, differX, differY) {
  if (!currentTarget || currentTarget === document || currentTarget instanceof Document)
    return false;
  if (currentTarget === root.parentNode)
    return true;
  const isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);
  const isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);
  const scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;
  const scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;
  const style = document.defaultView.getComputedStyle(currentTarget);
  const overflowY = style.overflowY === "auto" || style.overflowY === "scroll";
  const overflowX = style.overflowX === "auto" || style.overflowX === "scroll";
  const y = scrollY && overflowY;
  const x = scrollX && overflowX;
  if (isY && (!y || y && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!x || x && (currentTarget.scrollLeft >= scrollX && differX < 0 || currentTarget.scrollLeft <= 0 && differX > 0)))
    return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);
  return false;
}

exports.addEventListener = addEventListener;
exports.dataToArray = dataToArray;
exports.getTouchParentScroll = getTouchParentScroll;
exports.isNumeric = isNumeric;
exports.removeEventListener = removeEventListener;
exports.transformArguments = transformArguments;
exports.transitionEndFun = transitionEndFun;
exports.transitionStr = transitionStr;
exports.windowIsUndefined = windowIsUndefined;
//# sourceMappingURL=utils.cjs.map
