utils.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.addEventListener = addEventListener;
  6. exports.dataToArray = dataToArray;
  7. exports.isNumeric = exports.getTouchParentScroll = void 0;
  8. exports.removeEventListener = removeEventListener;
  9. exports.transformArguments = transformArguments;
  10. exports.windowIsUndefined = exports.transitionStr = exports.transitionEndFun = void 0;
  11. function dataToArray(vars) {
  12. if (Array.isArray(vars)) {
  13. return vars;
  14. }
  15. return [vars];
  16. }
  17. var transitionEndObject = {
  18. transition: 'transitionend',
  19. WebkitTransition: 'webkitTransitionEnd',
  20. MozTransition: 'transitionend',
  21. OTransition: 'oTransitionEnd otransitionend'
  22. };
  23. var transitionStr = Object.keys(transitionEndObject).filter(function (key) {
  24. if (typeof document === 'undefined') {
  25. return false;
  26. }
  27. var html = document.getElementsByTagName('html')[0];
  28. return key in (html ? html.style : {});
  29. })[0];
  30. exports.transitionStr = transitionStr;
  31. var transitionEndFun = transitionEndObject[transitionStr];
  32. exports.transitionEndFun = transitionEndFun;
  33. function addEventListener(target, eventType, callback, options) {
  34. if (target.addEventListener) {
  35. target.addEventListener(eventType, callback, options);
  36. } else if (target.attachEvent) {
  37. // tslint:disable-line
  38. target.attachEvent("on".concat(eventType), callback); // tslint:disable-line
  39. }
  40. }
  41. function removeEventListener(target, eventType, callback, options) {
  42. if (target.removeEventListener) {
  43. target.removeEventListener(eventType, callback, options);
  44. } else if (target.attachEvent) {
  45. // tslint:disable-line
  46. target.detachEvent("on".concat(eventType), callback); // tslint:disable-line
  47. }
  48. }
  49. function transformArguments(arg, cb) {
  50. var result = typeof arg === 'function' ? arg(cb) : arg;
  51. if (Array.isArray(result)) {
  52. if (result.length === 2) {
  53. return result;
  54. }
  55. return [result[0], result[1]];
  56. }
  57. return [result];
  58. }
  59. var isNumeric = function isNumeric(value) {
  60. return !isNaN(parseFloat(value)) && isFinite(value);
  61. };
  62. exports.isNumeric = isNumeric;
  63. var windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);
  64. exports.windowIsUndefined = windowIsUndefined;
  65. var getTouchParentScroll = function getTouchParentScroll(root, currentTarget, differX, differY) {
  66. if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {
  67. return false;
  68. }
  69. // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;
  70. if (currentTarget === root.parentNode) {
  71. return true;
  72. }
  73. var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);
  74. var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);
  75. var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;
  76. var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;
  77. var style = document.defaultView.getComputedStyle(currentTarget);
  78. var overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';
  79. var overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';
  80. var y = scrollY && overflowY;
  81. var x = scrollX && overflowX;
  82. 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))) {
  83. return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);
  84. }
  85. return false;
  86. };
  87. exports.getTouchParentScroll = getTouchParentScroll;